springsecurity+oauth 分布式认证授权笔记总结12

一 springsecurity实现权限认证的笔记

1.1  springsecurity的作用

springsecurity两大核心功能是认证和授权,通过usernamepasswordAuthenticationFilter进行认证;通过filtersecurityintercepter进行授权springsecurity其实多个filter过滤链进行过滤。

用户认证指的是:验证某个用户是否为系统合法主题,也就是说用户能否访问系统,用户认证一般要求用提供用户名和密码,系统通过校验用户名和密码来验证认证过程。

用户授权指的是某个用户具有权限执行某个操作,在一个系统中,不同的用户所具有的权限是不同的。比如对一个文件来说,有的用户只能进行读取,而用的用户可以进行修改。一般来说系统会为不同的用户分配不同的角色,而每个角色对应一系列的权限。

1.2 token模式与session模式

1.如果基于session模式,那么spring-security会对cookie里的sessionid进行解析,找到服务器存储session信息,然后判断当前用户是否符合请求的要求。

2.如果是基于token,则需要解析token,然后对当前请求加入到spring-security管理的权限信息中去。

1.3 案例授权流程

如果系统的模块比较多,每个模块都需要进行认证和授权,所以我们选择基于token的形式进行认证与授权。

1.用户根据用户名和密码认证成功,然后获取用户角色的一系列信息,并以用户名为key,权限为列表的value的形式存储到redis缓存中。

2.根据用户名和相关信息生成token,返回给前端。

3.浏览器将token记录到cookie中,每次调用api接口都默认将token携带到header请求头中。

4.spring-security解析header头,获取token信息,解析token获取用户名,根据用户名从redis中获取权限信息列表。这样spring-security就能够判断当前请求是否有权限访问。

1.4 整合springsecurity的结构

二  疑问记录

2.1 springsecurity怎么取消默认的登录页面以及修改页面自定义样式

2.2 分布式认证授权问题

分布式认证授权:
1.没有登录情况下,访问资源 ,api网关能够进行权限拦截
2.登录情况下,怎么对token的解析验证
3.登录情况下,权限内容怎么获取

4.分布式认证授权怎么做sso?

2.3 权限系统中,用户A对用户B修改权限后

1)超级用户修改正在登录中的用户密码之后当前强制退出?

实现逻辑:
1.假设用户认证成功后,用户信息存储到redis中,且形式为:<userid,权限>
2.管理员修改用户密码后,通过userid将redis中的用户信息清空。
3.用户再操作功能时,相应请求走filter进行判断,用户的权限为空,则让其重新登录。

2) 超级用户修改正在登录中的用户的角色,权限之后强制退出?

实现逻辑:
1.假设用户认证成功后,用户信息存储到redis中,且形式为:<userid,权限>
2.管理员修改用户角色后,通过查询redis,把redis中包含修改角色的用户信息都清空
3.用户操作功能时,相应请求走filter进行判断,用户的权限为空,则让其重新登录

2.4 指定登录接口

1.前端

2.后端

具体登录接口

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/94739.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

说说TIME_WAIT和CLOSE_WAIT区别

分析&回答 TCP协议规定&#xff0c;对于已经建立的连接&#xff0c;网络双方要进行四次握手才能成功断开连接&#xff0c;如果缺少了其中某个步骤&#xff0c;将会使连接处于假死状态&#xff0c;连接本身占用的资源不会被释放。网络服务器程序要同时管理大量连接&#xf…

深度学习-4-二维目标检测-YOLOv5源码测试与训练

本文采用的YOLOv5源码是ultralytics发行版3.1 YOLOv5源码测试与训练 1.Anaconda环境配置 1.1安装Anaconda Anaconda 是一个用于科学计算的 Python 发行版&#xff0c;支持 Linux, Mac, Windows, 包含了众多流行的科学计算、数据分析的 Python 包。 官方网址下载安装包&…

IP子网的划分

文章目录 一、子网掩码1. 产生背景2. 定义3. 分类 二、VLSM算法1. 得出下列参数2. 计算划分结果3. 举例子计算 三、常见子网划分对应关系四、练习IP编址题目需求解题1. 192.168.1.100/282. 172.16.0.58/263. 25.83.149.222/254. 100.100.243.18/205. 10.100.100.100/10 首先可以…

随机森林算法

介绍 随机森林是一种基于集成学习的有监督机器学习算法。随机森林是包含多个决策树的分类器&#xff0c;一般输出的类别是由决策树的众数决定。随机森林也可以用于常见的回归拟合。随机森林主要是运用了两种思想。具体如下所示。 Breimans的Bootstrap aggregatingHo的random …

【ARMv8 SIMD和浮点指令编程】NEON 乘法指令——乘法知多少?

NEON 乘法指令包括向量乘法、向量乘加和向量乘减,还有和饱和相关的指令。总之,乘法指令是必修课,在我们的实际开发中会经常遇到。 1 MUL (by element) 乘(向量,按元素)。该指令将第一个源 SIMD&FP 寄存器中的向量元素乘以第二个源 SIMD&FP 寄存器中的指定值,将…

python venv 打包,更换路径后,仍然读取到旧路径 ,最好别换路径,采用docker封装起来

机械盘路径 /home/yeqiang/code/xxx 移动到 /opt/xxx 编辑/opt/xxx/venv/bin/activate VIRTUAL_ENV"/home/yeqiang/code/xxx/venv" 改为 VIRTUAL_ENV"/opt/xxx/venv" 下面还有这么多&#xff0c;参考&#xff1a; (venv) yeqiangyeqiang-MS-7B23:/…

冠达管理:成交量突然放大意味着什么?

在股票商场中&#xff0c;成交量是股市中非常重要的目标之一。股票成交量是指在一定时间内股票买卖所成交的总股数。当成交量忽然扩大时&#xff0c;这意味着股票商场的很多买卖正在产生&#xff0c;这一般会引起出资者的注重。在本文中&#xff0c;我们将从多个视点来剖析成交…

linux操作系统中的动静态库(未完)

1. 静态库与动态库 静态库&#xff08;.a&#xff09;&#xff1a;程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库动态库&#xff08;.so&#xff09;&#xff1a;程序在运行的时候才去链接动态库的代码&#xff0c;多个程序共享使用库的…

北京APP外包开发团队人员构成

下面是一个标准的APP开发团队构成&#xff0c;但具体的人员规模和角色可能会根据项目的规模和需求进行调整。例如&#xff0c;一些小型项目或初创公司可能将一些角色合并&#xff0c;或者聘请外包团队来完成部分工作。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公…

02_nodejs开发环境安装

02 【nodejs开发环境安装】 1.版本介绍 在命令窗口中输入 node -v 可以查看版本0.x 完全不技术 ES64.x 部分支持 ES6 特性5.x 部分支持ES6特性&#xff08;比4.x多些&#xff09;&#xff0c;属于过渡产品&#xff0c;现在来说应该没有什么理由去用这个了6.x 支持98%的 ES6 特…

detour编译问题及导入visual studio

Detours是经过微软认证的一个开源Hook库&#xff0c;Detours在GitHub上&#xff0c;网址为 https://github.com/Microsoft/Detours 注意版本不一样的话也是会出问题的&#xff0c;因为我之前是vs2022的所以之前的detours.lib不能使用&#xff0c;必须用对应版本的x64 Native To…

230902-部署Gradio到已有FastAPI及服务器中

1. 官方例子 run.py from fastapi import FastAPI import gradio as grCUSTOM_PATH "/gradio"app FastAPI()app.get("/") def read_main():return {"message": "This is your main app"}io gr.Interface(lambda x: "Hello, …