SpringSecurity---细粒度的权限控制

第五章 细粒度权限控制

5.1 前置细节【Role和Authority的区别】

5.1.1 用户拥有的权限表示

  1. roles("ADMIN","学徒","宗师")
  1. authorities("USER","MANAGER");

5.1.2 给资源授予权限(角色或权限)

//.antMatchers("/level1/**").hasRole("学徒")

//.antMatchers("/level1/**").hasAnyRole("学徒","ADMIN")//拥有任何一个角色都可以访问

.antMatchers("/level1/**").hasAnyAuthority("学徒","ADMIN") //拥有任何一个权限都可以访问

.antMatchers("/level2/**").hasRole("大师")

.antMatchers("/level3/**").hasRole("宗师")

5.1.3 权限:【roles和authorities区别】

  1. roles("ADMIN","学徒","宗师")

增加"ROLE_"前缀存放:【"ROLE_ADMIN","ROLE_学徒","ROLE_宗师"】

表示拥有的权限。一个角色表示的是多个权限

用户传入的角色不能以ROLE_开头,否则会报错。ROLE_是自动加上的

如果我们保存的用户的角色:直接传入角色的名字,权限【new SimpleGrantedAuthority("ROLE_" + role)】保存即可

  1. authorities("USER","MANAGER");

原样存放:【"USER","MANAGER"】

表示拥有的权限。

如果我们保存的是真正的权限;直接传入权限名字,权限【new SimpleGrantedAuthority(role)】保存

无论是Role还是Authority都保存在  List<GrantedAuthority>,每个用户都拥有自己的权限集合->List<GrantedAuthority>

5.1.4 验证用户权限

  1. 通过角色(权限)验证:

.antMatchers("/level1/**").hasRole("学徒")

.antMatchers("/level1/**").hasAnyRole("学徒","ADMIN")

拥有任何一个角色都可以访问

验证时会自动增加"ROLE_"进行查找验证:【"ROLE_学徒","ROLE_ADMIN"】

通过权限验证

.antMatchers("/level1/**").hasAuthority("学徒")

.antMatchers("/level1/**").hasAnyAuthority("学徒","ADMIN")

拥有任何一个权限都可以访问

验证时原样查找进行验证:【"学徒","ADMIN"】

5.2 细粒度的资源控制

  1. authenticated():通过认证的用户都可以访问
  2. permitAll():允许所有人访问,即使未登录
  3. authorizeRequests():更细粒度的控制
  4. access(String): //SpEL:Spring表达式

.access("hasRole('

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值