当前位置: 首页 > news >正文

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.lryc.cn/news/151330.html

相关文章:

  • 如何在职业生涯中取得成功
  • Hive-安装与配置(1)
  • 链表模拟栈
  • MySQL基础篇:数据库概述和部署
  • 大数据面试题:MapReduce压缩方式
  • 【ICer的脚本练习】“精通各种语言的hello world!“
  • 解决npm install报错: No module named gyp
  • Leetcode 面试题 17.01 不用加号的加法
  • 一个 MySQL 数据库死锁的案例和解决方案
  • AMBEO 双声道空间音频现已迈进直播制作领域
  • 在VSCode上画UML的三个插件
  • Springboot - 1.什么是springboot
  • 学习微信小程序 Westore
  • CentOS上使用Docker安装和部署kkFileView
  • Level-based Foraging 多智能体游戏仿真环境
  • LeetCode-53-最大子数组和-贪心算法
  • 解决gitee仓库中 .git 文件夹过大的问题
  • uniapp 开发小程序,封装一个方法,让图片使用线上地址
  • Android 12 源码分析 —— 应用层 三(SystemUIFactory及其Dependency解析)
  • 考前冲刺上岸浙工商MBA的备考经验分享
  • XmlDocument.SelectNodes 不起作用
  • 部署单点elasticsearch
  • ElementUI浅尝辄止16:Tag 标签
  • Java虚拟机(JVM)框架
  • 配置Publisher 的编译规则
  • 【SpringBoot】接口实现:SpringBoot实现博客系统的文章列表页接口代码
  • 如何使用SQL系列 之 如何在SQL中插入数据
  • 【LeetCode题目详解】1281题 整数的各位积和之差 面试题 01.01. 判定字符是否唯一 python题解(作业一二)
  • 1.12 进程注入ShellCode套接字
  • MySQL 日志系统