这几天出错做项目,重新审视了下token在登录鉴权方面的一些优缺点。想了一个实现token代替session的方案,具体如下
- 用户登录
- 服务器生产带有过期时间(以30分钟为例)的token,token的payload包含用户信息的唯一标示(用户名/用户id)、常用基本信息
- 服务器将生成的token保存到缓存(redis)并通过response返回
- 客户端将response中的token解析出来并保存(localstorage等)中
- 再次发送请求会携带token,服务器解析token中的信息,并判断是否过期。如过期则需要重新登录;否则处理完成后删除redis中的token并重新生成过期时间30分钟的token,存入redis并通过response返回