您的位置:首页 > 其它

项目梳理——Token用何算法如何生成以及如何使用token方式进行登录

2020-06-05 05:43 417 查看

当浏览器不支持cookie的时候,我们就无法直接使用session。在这种情况下,用token可以达到相同的目的。
Token中文译名是令牌,是服务端生成的一串字符串,作为客户端进行请求的一个标识。当后台接收到用户发来的请求,会用请求带来的token验证用户身份。

一、单Token

1.常用加密算法

token方式的常用加密算法有UUID,雪花算法,JWT算法。
UUID简单来说,是由一组32位数的16进制数字所构成的全世界通用唯一识别码,它是由你的网卡+随机数+currentTime进行算法生成。

举个例子,当用户通过UUID登陆成功,后台以Json格式返回给前端带token信息的data{…},这个token会储存在某一个变量里或者前端的某一个位置。当这个用户再一次发请求的时候,输入URL(本地+请求类型+token),后台接受到请求获取token,并把token的值拿去和之前存在后台DB中的UUID值里的token表相对比验证。如果token存在,则请求成功,访问合法。

补充:token生成的时候一般同时会加一个生成时间的字段也存入数据库中以记录token的生成时间,后台在拿到用户请求链接地址里的token时,会拿token的当前时间和生成时间作比较,一般会设置有效时间,过了有效时间,token就过期失效。

例如设置2个小时,创建一个CreateAt的用于存储生成时间的字段:
validtime=CreateAt+7200s

同样,当用户访问其他信息时,都会带着这个token,所以每次操作都要进行校验token。如果校验通过,则会对token的有效时间进行刷新,刷新后:
validtime=CurrentTime+7200s

缺点:UUID易被模仿,只要发一个32位的字符串,后台接收到就要进行一系列的操作。
而JWT相比之下就更规范,更标准。

2.JWT(JSON Web Token)

JWT算法是基于RSA非对称加密算法,由随机生成的keyId结合JWT库的jose4j,生成一对唯一的publicKey和privateKey。
3个比较重要的:
AccountController :控制类
User :用户实体类
AuthorizationService :认证服务,提供3个方法:用唯一id生成keyPair , 用私钥生成token,用公钥验证token。

如何用token方式进行登录?
用户注册&登录Test(context Path为空):
a.

http://127.0.0.1:8097/register?account=x&password=x

b.

http://127.0.0.1:8097/login?account=x&password=x


c.用获取的token进行登录

http://127.0.0.1:8097/user?token=

如果这篇文章没有解决你的疑惑,点击看这篇对token、jwt讲解都较为详细

不要着急~双Token在这里

新手入门,欢迎指正~

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐