JWT续期与登出思考

这两天看了很多相关的知识,梳理一下,记录一些思考。

1.token与jwt的区别

    (1)简单的说,token只是一个标识,以token加redis为例,服务端将token保存在redis中,客服端访问时带上token,如果在redis中能够查到这个token,说明身份有效。

    (2)jwt不需要查库,本身已经包含了用户的相关信息,可以直接通过服务端解析出相关的信息,与session,token的最大区别就是服务端不保存任何信息。

2.如何实现jwt续期

在jwt中保存过期时间,解析时进行判定,如果即将超时则重新设置过期时间返回一个新的jwt给客户端。

3.jwt登出失效

登出时将相关的信息比如用户名存储在redis中,并设置过期时间。当再次访问时,从jwt中解析出用户名去redis中查找,如果存在则表示此jwt已登出失效。这里需要注意的是,如果用此方法,则验证jwt是否登出应该放在第一位。思考一个场景,如果redis中存储的是用户名,那么当用户登出后,redis中已经有了相应的用户名,当用户再次登录时,解析jwt发现此用户已登出,则jwt失效,所以在登录时要清空相关的登出缓存。

你可能感兴趣的:(jwt,security)