若依微服务版本-认证授权(ruoyi-auth)

若依官方:http://doc.ruoyi.vip/ruoyi-cloud/cloud/auth.html#%E4%BD%BF%E7%94%A8%E8%AE%A4%E8%AF%81

若依密码产生和验证过程:http://wangxianfeng.cn/wordpress/2021/09/21/%E8%8B%A5%E4%BE%9D%E5%AF%86%E7%A0%81%E4%BA%A7%E7%94%9F%E5%92%8C%E9%AA%8C%E8%AF%81%E8%BF%87%E7%A8%8B/

jwt相关知识:https://blog.csdn.net/weixin_45070175/article/details/118559272

 

概览

A,注册用户时对password加密(不可逆),保存在数据库;

B,用户使用namepassword登录,使用相同的参数对password加密后,和数据库的比较,不相同则密码错误;

C,后台生成token返回给前台,前台保存token在登录人的电脑中;

D,登录人调用后台接口,前端开发人员把本地的token放到请求头中;请求先走到网关,网关获取token并验签解析token,成功则说明认证成功,允许你继续访问后台资源了;

 

一、密码校验

1,注册用户,加密明文密码

加密的入参(加密算法、盐、随机数)都是使用的默认的;

2,用户登录,校验密码

将明文密码使用和步骤1中相同的加密方式和加密入参进行加密,并和数据库保存的加密密码比较;

 

二、生成token

1,用户登录,创建token

 

2,创建token的大体流程

3,生成UUID作为token

 

4,后台使用redis缓存token,过期时间半天

 

5,将tokenuserId、用户名称打包成jwt,返回给前台

 

 

三、校验token

1,前台如何传递token

前台需要和后台商量好传递token的方式,比如若依这个项目,前端把token放在请求头里传递给我后台,请求头的keyAuthorizationvalue在前面还拼上了Bearer

 

2,后台校验token

所有的前台请求都会先走到网关(gate-way),这样token的认证校验就统一交给网关处理,校验通过后再分发给对应的服务;

 

3,解析tokenjwt

 

 像我们平常瞎写token,基本是无法验签的;因为jwt应该包含了signature字段,后台使用证书解签的时候得到的signature和传来的signature肯定是不一样的;

 

四、其他

后台给了前台token,前台拿着这个token就可以访问后台,并且可以识别是谁在访问,通过曲线救国的方式让无状态的http请求变成了有状态的;

token可以在多个服务间共享,省的每个服务都要去连数据库查询用户名密码是否正确;

 

posted @ 2022-05-11 15:44  seeAll  阅读(4937)  评论(0编辑  收藏  举报