如何给用户分配权限?

在正常的开发中,想必大家都知道有用户、管理员和vip的专属功能,呢么是怎么分层确认谁的权限呢? 这里为大家介绍一下用SpringSecurity解决权限问题。

springSecurity官网介绍(汉化后)

Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。它实际上是保护基于spring的应用程序的标准。

Spring Security是一个框架,侧重于为Java应用程序提供身份验证和授权。与所有Spring项目一样,Spring安全性的真正强大之处在于它可以轻松地扩展以满足定制需求。

官网地址:https://spring.io/projects/spring-security

认证:通过用户名和密码来验证身份。

授权:能够使用和访问资源的多少。

需求依赖

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-security</artifactId>
</dependency>

几个关键类

@WebSecurityConfigurerAdapter:自定义Security策略
@AuthenticationManagerBuilder:自定义认证策略
@EnableWebSecurity:开启WebSecurity模式

授权

在进行权限管理时,需要继承WebSecurityConfigurerAdapter类

这里对configure方法进行了重载,在这里可以基于不同的请求方式来对用户进行授权。

    protected void configure(HttpSecurity http) throws Exception {
//        首页全部能访问 功能对应有权限的访问
        http.authorizeHttpRequests().antMatchers("/").permitAll()  //全员访问
                                    .antMatchers("/level1/**").hasRole("vip1")   //对应相关人员
                                    .antMatchers("/level2/**").hasRole("vip2")
                                    .antMatchers("/level3/**").hasRole("vip3");

//        没有权限 默认返回到登录页
        http.formLogin();
    }
    

对用户授权后,发现除了首页其他所有页面都访问不了了, 是因为我们还没给用户进行认证。

认证

定义认证规则,去重写configure方法

    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
//        正常应该从数据库中读取  目前采取从内存中读取
        auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder())
                .withUser("tdj").password("123456").roles("vip1","vip2").and()
                .withUser("root").password(new BCryptPasswordEncoder().encode("root")).roles("vip1","vip2","vip3");
    }

这里的数据是直接使用的内存中的,并没有去接数据库。且在SpringSecurity中必须要对密码加密否则会报错

加密方式:

去调用passwordEncoder(new BCryptPasswordEncoder())来修改密码编码。

修改完密码加密后,就实现了给用户分配权限,且只能访问自己权限内的页面。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【实例简介】 项目采用经典DDD架构(用沃恩.弗农大神的话,其实这是DDD-Lite)思想进行开发,简洁而不简单,实用至上,并且所写每一行代码都经过深思熟虑,符合SOLID规则! ####当前版本 3.0 alpha版(2017-2-7) 采用全新工作流,实现自定义表单处理; 2.0版(2016-10-31) 支持多流程模板; 增加Ace admin界面支持 秀外 输入图片说明 输入图片说明 输入图片说明 慧中 教科书级的分层思想,哪怕苛刻的你阅读的是大神级精典大作(如:《企业应用架构模式》《重构与模式》《ASP.NET设计模式》等),你也可以参考本项目。不信?有图为证,Resharper自动生成的项目引用关系,毫无PS痕迹! 输入图片说明 实用 符合国情的RBAC(基于角色的访问控制),可以直接应用到你的系统。 权限资源 菜单权限 经理和业务员登陆系统拥有的功能菜单是不一样的 按钮权限 经理能够审批,而业务员不可以 数据权限 A业务员看不到B业务员的单据 字段权限 某些人查询客户信息时看不到客户的手机号或其它字段 用户应用系统的具体操作者,我这里设计用户是可以直接给用户分配菜单/按钮,也可以通过角色分配权限。 角色为了对许多拥有相似权限用户进行分类管理,定义了角色的概念,以上所有的权限资源都可以分配给角色,角色和用户N:N的关系。 机构树形的公司部门结构,国内公司用的比较多,它实际上就是一个用户组,机构和用户设计成N:N的关系,也就是说有时候一个用户可以从属于两个部门,这种情况在我们客户需求中的确都出现过。 ####系统工程结构: OpenAuth.Domain 系统领域层 OpenAuth.Repository 系统仓储层,用于数据库操作 OpenAuth.App 应用层,为界面提供接口 OpenAuth.Mvc 采用基于jquery与bootstrap的B-JUI界面 OpenAuth.UnitTest 单元测试 Infrastructure 通用工具集合 ####使用 管理员可直接在登录界面点击基于精典DDD的权限管理 - 点击以开发者账号登录登录; 普通应用账号使用:test(密码:test)登录; ####后续 更多狂野的功能,正在玩命加载中,敬请期待... 更多文档正在整理中.... 当然,如果你想学习完整的DDD框架,可以参考我的另一个项目(BestQ&A--开源中国推荐项目/集CQRS AES等DDD高级特性于一体的问答系统) 【实例截图】

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值