JWT是什么
-
json web token
-
通过数字签名的方式,以json对象为载体,在不同服务端之间进行传输
-
主要是用于登录校验,传统的方式是将用户的信息,通过session的方式储存在服务端,这样管理用户登录状态的成本越来越高,因此慢慢发展成token的方式做登录校验,然后通过token去取redis中的信息,随后出现jwt,校验方式更简单,
-
-
优点
-
无需在服务端储存用户的数据,减轻服务端的压力
-
跨语言,在不同服务端之间进行传输
-
轻量级,json风格,比较简单
-
-
缺点:
-
无法更新token有效期,用户登录状态刷新难以实现(解决办法:在验证用户登录状态的代码中,增加一段逻辑判断,比如token有效期设置为30分钟,当用户请求我们时,判断token的有效期还有十分钟,则这时候生成一个新的token,因此当用户只要在操作时就会续签token)
-
无法销毁一个token,服务端不能对用户状态进行绝对控制(注销token的方法,用户登录后生成jwt,将这个jwt存入redis,只有redis中有id的jwt才是有效的jwt,然后再用户退出登录的时候,将这个id从redis中删除即可)
-
不包含控制权限
-