单点登录,验证,jwt令牌

单点登录,验证,jwt令牌用户\角色\权限用户是一个基本的单位我们登录时都是在登录用户的我们再登录后需要明确这个用户具有哪些角色用户和角色的关系是多对多用户是一张表,角色

大家好,欢迎来到IT知识分享网。

用户\角色\权限

用户是一个基本的单位

我们登录时都是在登录用户的

我们再登录后需要明确这个用户具有哪些角色

用户和角色的关系是多对多

用户是一张表,角色也是一张表,因为它们是多对多的关系所以要有一张保存用户和角色关系的中间表

角色也不能直接决定这个用户能做什么操作,有哪些权限

需要再关联权限表决定

角色和权限也是多对多的关系,也要有中间表

如果项目开发的权限比较全面,可能会出现临时用户权限关系表

Spring Security

Spring Security框架用于实现登录

同时还可以将当前登录用户的权限信息保存

我们需要花费一些精力将Spring Security的登录过程要记忆

我们在项目中要验证当前用户是否具备某个权限时

可以再控制器方法代码前添加@PreAuthorize(“[权限名称]”)SpringSecurity在运行该方法之前进行核查

如果不具备这个权限会返回403状态码

关于单点登录

微服务的会话保持问题

我们在微服务的架构下,完成登录,和单机模式的登录是有很大区别的

首先我们分析一下普通登录和微服务登录的区别

单点登录,验证,jwt令牌

区别

上面的图片,表示我们在微服务系统中登录时遇到的问题

我们在用户模块中登录,只是将用户信息保存在用户模块的session中

而这个session不会和其他模块共享

所以在我们访问订单模块或其他模块时,通过sessionid并不能获得在用户模块中登录成功的信息

这样就丢失的用户信息,不能完成业务

市面上现在大多使用JWT来实现微服务架构下的会话保持

也就是在一个服务器上登录成功后,微服务的其他模块也能识别用户的登录信息

这个技术就是单点登录

单点登录解决方案

Session共享

这种方式的核心思想是将用户的登录信息共享给其他模块

适用于小型的,用户量不大的微服务项目

单点登录,验证,jwt令牌

session

将登录成功的用户信息共享给Redis

其他模块根据sessionId获得Redis中保存的用户信息即可

* 这样做最大的缺点就是内存严重冗余,不适合大量用户的微服务项目

JWT令牌

这种登录方式,最大的优点就是不占用内存

单点登录,验证,jwt令牌

jwt

生成的JWT由客户端自己保存,不占用服务器内存

在需要表明自己用户身份\信息时,将JWT信息保存到请求头中发送请求即可

Jwt登录流程图

单点登录,验证,jwt令牌

jwt流程图

静态资源服务器

什么是静态资源服务器

我们无论做什么项目,都会有一些页面中需要显示的静态资源,例如图片,视频文档等

我们一般会创建一个单独的项目,这个项目中保存静态资源

其他项目可以通过我们保存资源的路径访问

单点登录,验证,jwt令牌

路径

为什么需要静态资源服务器

原因是静态资源服务器可以将项目需要的所有图片统一管理起来

当其他模块需要图片时,可以从数据库中直接获得访问静态资源的路径即可

方便管理所有静态资源

Leaf

什么Leaf: leaf是叶子的意思

我们使用的Leaf是美团公司开源的一个分布式序列号(id)生成系统

我们可以在Github网站上下载项目直接使用

单点登录,验证,jwt令牌

mycat

上面的图片中

是一个实际开发中常见的读写分离的数据库部署格式

专门进行数据更新(写)的有两个数据库节点

它们同时新增数据可能产生相同的id

一旦生成相同的id,数据同步就会有问题

会产生id冲突,甚至引发异常

我们为了在这种多数据库节点的环境下能够产生唯一id

可以使用Leaf来生成

Leaf的工作原理

Leaf底层通过雪花算法生成不相同的id

在Leaf的数据库中

设置了每个模块申请id的数量

一旦一个模块申请了这个区域的id,其他模块就不能再申请了,默认自增申请下一个区域的id

单点登录,验证,jwt令牌

原理

学习记录,如有侵权请联系删除

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/47307.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信