token:
token的意思是“令牌”,是用户身份的验证方式,最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,由token的前几位+盐以哈希算法压缩成一定长的十六进制字符串,可以防止恶意第三方拼接token请求服务器)。还可以把不变的参数也放进token,避免多次查库。token在服务器端并不保存,当服务器端收到token时,使用服务器端的特定的算法和只有服务器端知道的密钥,计算签名,如果相同则通过验证。token解决了上述的session和cookie的不足,减少了服务器端的开销,不用在服务器端存储会话标志,可以很好的支持分布式和支持多端登录。
关于token的有效期:
token即是获取受保护资源的凭证,当然必须有过期时间。否则一次登录便可永久使用,认证功能就失去了其意义。非但必须有个过期时间,而且过期时间还不能太长。参考各个主流网站的token过期时间,一般不超过1h。
token过期怎么办?
假设后台给的token的有效时间是1个小时,一般后台会给前台返三个参数:token,过期时间,刷新token的时间点。(刷新token的时间点一般比过期时间早20分钟,看后台返回的数据而定)将他们都存进本地localstorage中。每次发起axios请求时,都获取一个当前的时间戳 timestamp。