今天面试被问到了有什么用,没想过有什么问题,就从网上找了点看看,总结一下。
token的简单了解
token是“令牌”,是用户输入登录信息后由服务端产生字符串。里面记录了用户信息等内容。作用是作为客户端的请求标识。
token生成之后由服务端发送给客户端,服务端不保存token但会保存生成token的密文。之后客户端再发送请求,服务端就会验证token的信息。
token的组成是三部分:
header存储一些算法信息,payload存储一些数据。大体的使用方法如下:
token这样保存到cookie中就不会有cookie那样信息直接被拦截泄漏的风险,服务端也不会像session那样存储大量的登录信息。只需要客户端发送信息给服务端,服务端解密验证即可。
为了用户账户的安全,token需要设置过期时间。一般token设置的时间很短,而且一旦过期用户执行其他操作就要重新进行登录操作,对用户的使用体验很不好。所以我们使用双token登录的方式来记录用户的信息。当用户登录时会创建两个token:accesstoken,refreshtoken。其中access是之前的那个刷新时间短的token,而refresh是那个刷新时间长的token。服务端只返回access,自己保留refresh。所以当检测到access过期后后台就会查看对应的refresh是否过期,如果过期就要提醒用户重新登录,如果没有过期就会重置access的时间。整个操作用户不知,所以是无感的。 refreshtoken是保存到数据库中的。