JSON Web Token 也就是JWT,无状态的,可以携带信息,也就是载荷,base64解码后可以看到明文,再加个签名,可以确认数据是否有被篡改。有些时候,会非常的大,如果信息多的话。
不想用了,然后就修改了一下,我也不转成密文了,直接把对象存在redis里。
照常登录,登录完以后,生成一个唯一的key,然后把用户的信息对象存到redis里。注意,不要把密码,手机号等敏感信息存到redis里了。
因为这个前端查询的时候直接返回的。
再加个有效期,比如说在redis里是2个小时的。过了两个小时就没有了。
那怎么办呢?
于是我们还要创建一个持久化到数据库里
当redis上没有的时候,我们就拿着这个key去mysql中查询,如果有,那么加载一份用户信息到redis中。
这样子,理论上来说,这个key永远都不会过期了。
那这个key丢失了怎么办呢?
重新登录咯
登录的时候注意了,要把旧的删除掉。否则会越来越多的了。
如果要限制时间呢?比如说,超过一个月没有用了,就要重新输入密码登录
那你在查询出来的时候,判断一下更新时间嘛,如果超过了一个月,返回账号未登录,再次登录的时候,删除旧的,新的又入库了。
检查令牌的目的,一是登录状态,二是获取用户信息,通常有ID和角色。
ID用于CRUD用户的资源;角色用于鉴权。
一样的道理咯,如果redis中有,就在线的,如果redis里没有,去mysql里查,有的话没过期就加载一份新的用户信息到redis上,过期了就返回未登录。
退出登录把redis里的对象删除,把mysql里的对象也删除一下。




















