token与session的区别
- token可以是分布式的,即拿到一个token可以访问多个应用(比如说分布式应用)。
- session是依赖于浏览器的,通过jessionid来识别用户身份。
- 前后端分离的项目,如果存在跨域,使用session的方式就会比较麻烦(这时需要修改前后端设置,最终达到前端携带cookie,传给后端的效果)。
token的颁发
token的刷新
token一般都是有存活时间的,比如30分钟。存活时间已过的话,就需要进行刷新。
提前刷新
假设token失效的时间为2小时,那么提前30分钟进行更新。在这30分钟内,新的 和 老的 token同时生效,但是获取新的token的方式得是同步的。
黑名单+存活时间
这时候如果存在多个请求调用 刷新接口,可以采用黑名单+存活时间的方式处理。也就是说在生成 新的token 的同时(需要是同步方法),将老的token放入黑名单,并添加存活时间(比如说3分钟)。在存活时间内,如果使用了老的token访问还能够正常获取到数据。这样可以实现无限延长(不存在因token失效而产生的无效请求)的效果。
