项目梳理——Token用何算法如何生成以及如何使用token方式进行登录
当浏览器不支持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讲解都较为详细
新手入门,欢迎指正~
- springboot+angular项目 使用token方式进行权限验证
- 使用PS切片工具进行切片生成div布局的页面的方法以及如何确定图片中某个点在图片中的位置
- 1.读写分离(主数据库写 可分拆副数据库读);2.垂直分库(将系统按业务进行了垂直拆分主数据库);3.水平分主库(ID生成算法决定了如何拆分数据,以及增删改查)
- 使用Python以及flask框架实现区块链的创建、工作量证明、共识算法、生成网络节点并一步步运行挖矿检验(文末附项目完整代码)
- 4.如何使用常用的6种方式对数据进行转换(一)
- 在int9中断中如何使用call方式进行程序跳转
- 如何在iOS中使用ZXing库(ZXing是一个开源的条码生成和扫描库,开源协议为Apache2.0。它持众多条码格式和语言,比如Java、 C++、 C#、 Objective-C以及Act )
- 使用 ConTest 进行多线程单元测试 - 为什么并行测试很困难以及如何使用 ConTest 辅助测试
- Java中的数组以及使用数组进行增删改查的算法复杂度
- windows7下如何使用myeclipse(eclipse)和cvs进行项目管理
- 如何在IIS7上配置 FTP7并使用IIS管理凭据方式进行验证?
- 2009 年8 月6号 学习 uml、ea、设计模式以及如何使用它们进行分析、设计
- 【转载】配置SQL Server 2005 Express的身份验证方式,以及如何启用sa登录名。
- 使用mysqldump导出数据库的几种方式以及如何导入数据库
- C++文件如何在linux下生成动态库So,以及如何使用这个动态库
- Qt简介以及如何配置Qt使用VS2010进行开发
- 叙述二维码的原理以及如何使用google api和PHP QR Code来生成二维码
- [原创]修正SubSonic v2.2.1的一处BUG,以及如何使用SubSonic进行多表查询、子查询以及数据库分页
- 开源那些事儿(四)-如何使用CodePlex进行项目管理
- 配置SQL Server 2005 Express的身份验证方式,以及如何启用sa登录名