基于SpringSecurity实现RBAC权限控制(待完善)
Spring Security是一个为企业应用系统提供声明式的安全访问控制功能,减少为了企业应用系统安全控制而编写的大量重复代码。
认证:
spring security的原理就是使用很多的拦截器对URL进行拦截,以此来管理用户登录和授权,用户登录时,会被AuthenticationProcessingFilter拦截,通过ProviderManager来对用户信息进行验证,如果验证通过后会将用户的权限信息封装成User放到SecurityContextHolder中,以备后面访问资源时使用。
我们要自定义用户的校验机制的话,只要实现AuthenticationProvider,将他注入到配置类中
授权:
基于RBAC的权限控制,RBAC一般都是由 3个部分组成,用户,角色 ,资源(菜单,按钮),然后就是用户和角色的关联表,角色和资源的关联表,核心就是判断当前用户所拥有的URL是否和当前访问的URL是否匹配
Spring Security配置
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired
private AuthenticationProvider provider; @Autowired
private AuthenticationSuccessHandler myAuthenticationSuccessHandler; @Autowired
private AuthenticationFailureHandler myAuthenticationFailHander; //注入我们自己的AuthenticationProvider
@Override
protected void configure(HttpSecurity http) throws Exception {
http
//表示表单登录的url是/login,表单提交的url是/login/form
//myAuthenticationSuccessHandler 登录成功处理器
//myAuthenticationFailHander 登录失败处理器
.formLogin().loginPage("/login").loginProcessingUrl("/login/form")
.successHandler(myAuthenticationSuccessHandler)
.failureHandler(myAuthenticationFailHander)
.permitAll()
//permitAll()表示允许访问/login,/login/form
.and()
//设置授权请求,任何请求都要经过下面的权限表达式处理
.authorizeRequests()
.anyRequest().access("@rbacService.hasPermission(request,authentication)") //权限表达式
.and()
//在Security的默认拦截器里,默认会开启CSRF处理,判断请求是否携带了token,如果没有就拒绝访问,所以这里要关闭CSRF处理
.csrf().disable();
} @Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(provider);
} }
github下载地址:https://github.com/jake1263/SpringSecurity
基于SpringSecurity实现RBAC权限控制(待完善)的更多相关文章
- 基于thinkphp的RBAC权限控制
RBAC Role-Based Access Control 权限控制在后台管理中是十分常见的,它的模型大体上是下面这张图的形式 我用的字段和上面不一样,图只是个示例 一个简易的权限控制模型只需要3 ...
- 基于中间件的RBAC权限控制
RBAC 是什么 RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联. 在 Django 中,权限就是用户对一个包含正则表达式 url ...
- python RBAC权限控制模型扩展 基于JWT实现
jwt,全称 json web token,是使用一定的加密规则生成的token串来保证登录状态.验证用户身份.做权限认证等工作 以往保存用户登录状态多用session实现,但是当服务涉及多台服务器分 ...
- yii2搭建完美后台并实现rbac权限控制实例教程
1.安装yii2 未安装的请参考yii2史上最简单式安装教程,没有之一 或者参考yii2实战教程之详细安装步骤 已安装的请继续看下一步操作 2.配置数据库 2.1 配置数据库 修改common/con ...
- yii2 rbac权限控制之菜单menu详细教程
作者:白狼 出处:http://www.manks.top/article/yii2_rbac_menu本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则 ...
- vue基于d2-admin的RBAC权限管理解决方案
前两篇关于vue权限路由文章的填坑,说了一堆理论,是时候操作一波了. vue权限路由实现方式总结 vue权限路由实现方式总结二 选择d2-admin是因为element-ui的相关开源项目里,d2-a ...
- Kubernetes-16:一文详解ServiceAccount及RBAC权限控制
一.ServiceAccount 1.ServiceAccount 介绍 首先Kubernetes中账户区分为:User Accounts(用户账户) 和 Service Accounts(服务账户) ...
- yii2 rbac权限控制详细操作步骤
作者:白狼 出处:http://www.manks.top/article/yii2_rbac_description本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出 ...
- Struts2中基于Annotation的细粒度权限控制
Struts2中基于Annotation的细粒度权限控制 2009-10-19 14:25:53| 分类: Struts2 | 标签: |字号大中小 订阅 权限控制是保护系统安全运行很重要 ...
随机推荐
- python--requests模块初识
requests,发送http请求(用python模拟浏览器浏览网页)requests.get("http://www.baidu.com") 示例: import request ...
- vue 自定义过滤器
vue允许自定义过滤器,被用作一些常见文本的格式化.由“管道符”指示,格式如下: <!-- 在两个大括号中 --> {{message | capitalize}} <!-- 在 ...
- linux学习16 Linux用户和组管理命令演练和实战应用
一.上集回顾 1.bash globing,IO重定向及管道 glob:*,?,[],[^] IO重定向: >,>>, 2>,2>> &>,& ...
- Python爬虫 | xpath的安装
错误信息:程序包无效.详细信息:“Cannot load extension with file or directory name . Filenames starting with "& ...
- Anaconda与Python安装版本对应关系 --- 转载
转载自:https://blog.csdn.net/yuejisuo1948/article/details/81043823 首先解释一下上表. anaconda在每次发布新版本的时候都会给pyth ...
- three.js 加载3DS 404 文件找不到
web.config修改如下: code: <?xml version="1.0" encoding="utf-8"?> <!-- 有关如何配 ...
- 分享一个Centos8的国内yum源
使用的是清华大学开源镜像站,文件地址: https://github.com/hackyoMa/docker-centos/blob/8/CentOS-Base.repo 使用方法: cd /etc/ ...
- 20181107 模拟赛T1:快乐传递政治正确版
问题描述 David 有很多好朋友.有些期末季刚结束,有些人很快乐,但有些不太快乐,David 想把快乐传递给每个人,作为心理学大师,他准备了如下计划:David 的朋友中有 n 个男生和 m 个女生 ...
- 【luoguP2986】[USACO10MAR]伟大的奶牛聚集Great Cow Gathering
题目链接 先把\(1\)作为根求每个子树的\(size\),算出把\(1\)作为集会点的代价,不难发现把集会点移动到\(u\)的儿子\(v\)上后的代价为原代价-\(v\)的\(size\)*边权+( ...
- Quartus RTL Simulation
今天在做某个module的RTL Simulation时,发现之前的do文件有问题,导致信号没有导入.将sim中的XXX_tb设置成了XXX所致.改正后无误. 可参考: https://www.cnb ...