什么是token算法
token的意思是“令牌”,是服务端生成的一串字符串,做为客户端进行请求的一个标识。数据库
当用户第一次登陆后,服务器生成一个token并将此token返回给客户端,之后客户端只需带上这个token前来请求数据便可,无需再次带上用户名和密码。服务器
简单token的组成;uid(用户惟一的身份标识)、time(当前时间的时间戳)、sign(签名,token的前几位以哈希算法压缩成的必定长度的十六进制字符串。为防止token泄露)。cookie
使用token机制的身份验证方法,在服务器端不须要存储用户的登陆记录。流程:网络
客户端使用用户名和密码请求登陆。服务端收到请求,验证用户名和密码。验证成功后,服务端会生成一个token,而后把这个token发送给客户端。客户端收到token后把它存储起来,能够放在cookie或者Local Storage(本地存储)里。客户端每次向服务端发送请求的时候都须要带上服务端发给的token。服务端收到请求,而后去验证客户端请求里面带着token,若是验证成功,就向客户端返回请求的数据。ui
token的存储加密
token能够存到数据库中,可是有可能查询token的时间会过长致使token丢失(其实token丢失了再从新认证一个就好,可是别丢太频繁,别让用户没事儿就去认证)。token
为了不查询时间过长,能够将token放到内存中。这样查询速度绝对就不是问题了,也不用太担忧占据内存,就算token是一个32位的字符串,应用的用户量在百万级或者千万级,也是占不了多少内存的。内存
token的加密字符串
token是很容易泄露的,若是不进行加密处理,很容易被恶意拷贝并用来登陆。加密的方式通常有:
在存储的时候把token进行对称加密存储,用到的时候再解密。文章最开始提到的签名sign:将请求URL、时间戳、token三者合并,经过算法进行加密处理。
最好是两种方式结合使用。
还有一点,在网络层面上token使用明文传输的话是很是危险的,因此必定要使用HTTPS协议。