hasRole:

角色授权:授权代码,在我们返回的UserDetails的Authority需要加ROLE_前缀,Controller上使用时不要加前缀;

hasAuthority:

权限授权:用户自定义的权限,返回的UserDetails的Authority只要与这里匹配就可以,这里不需要加ROLE_,名称保持一至即可

Spring Security可用表达式对象的基类是SecurityExpressionRoot,其为我们提供了如下在使用Spring EL表达式对URL或方法进行权限控制时通用的内置表达式:

表达式 说明
permitAll 永远返回true
denyAll 永远返回false
anonymous 当前用户是anonymous时返回true
rememberMe 当前用户是rememberMe用户时返回true
authenticated 当前用户不是anonymous时返回true
fullAuthenticated 当前用户既不是anonymous也不是rememberMe用户时返回true
hasRole(role) 用户拥有指定的角色权限时返回true
hasAnyRole([role1,role2]) 用户拥有任意一个指定的角色权限时返回true
hasAuthority(authority) 用户拥有指定的权限时返回true
hasAnyAuthority([authority1,authority2]) 用户拥有任意一个指定的权限时返回true
hasIpAddress('192.168.1.0') 请求发送的Ip匹配时返回true

还可以在WebSecurity指定我们自己写的方法控制权限:

.access("@MyRbacService.findAuthority(request,authentication)")//指定我们自己写的方法控制权限

扩展:

@PreAuthorize可以用来控制一个方法是否能够被调用。
@PostAuthorize是在方法调用完成后进行权限检查,它不能控制方法是否能被调用,只能在方法调用完成后检查权限决定是否要抛出

@PreFilter和@PostFilter可以对集合类型的参数或返回值进行过滤。使用@PreFilter和@PostFilter时,Spring Security将移除使对应表达式的结果为false的元素。

@PostFilter("filterObject.id%2==0")
public List<User> findAll() {}

参考链接:https://www.baeldung.com/spring-security-expressions

Spring Security中@PreAuthorize、@PostAuthorize、@PreFilter和@PostFilter_起努力的博客-CSDN博客

Spring Security - @PreAuthorize安全表达式hasRole、hasAuthority区别相关推荐

  1. spring security中Authority、Role的区别

    最近在研究spring security时,大概研究了一下Authority.Role之间到底有什么本质的区别. 如果你使用的是hasRole方法来判断你的登录用户是否有权限访问某个接口,那么你初始化 ...

  2. spring security 方法安全表达式 使用参数 调用bean 自定义校验方法

    版本 spring security 5.6.6 使用参数 在鉴权表达式中通过**#参数名**格式引用参数值 可以通过*@P*注解给参数添加别名 import org.springframework. ...

  3. 理解Spring Security中permitAll()和anonymous()的区别

    从 Spring文档: 采用"默认拒绝"通常被认为是良好的安全实践,您可以明确指定允许的内容并禁止其他所有内容.定义未经身份验证的用户可以访问的内容是类似的情况,尤其是对于 Web ...

  4. html form role,Spring Security中html页面设置hasRole无效的问题

    HDU 4349 Xiao Ming&#39;s Hope 有这样一个性质:C(n,m)%p=C(p1,q1)*C(p2,q2).......%p,其中pkpk-1...p1,qkqk-1.. ...

  5. Spring Security构建Rest服务-1401-权限表达式

    Spring Security 的权限表达式 用法,在自定义的BrowserSecurityConfig extends WebSecurityConfigurerAdapter 配置文件里,每一个a ...

  6. springboot集成spring security实现登录和注销

    文章目录 一.导入坐标 二.Users实体类及其数据库表的创建 三.controller,service,mapper层的实现 四.核心–编写配置文件 五.页面的实现 运行结果 一.导入坐标 < ...

  7. spring security:第一个程序解析

    上一篇在一个项目里配置了spring security,这里大致说一些这些配置的作用. pom.xml 文件解析 <!-- spring security --><!-- sprin ...

  8. Spring Security 4 整合Hibernate 实现持久化登录验证(带源码)

    上一篇文章:Spring Security 4 整合Hibernate Bcrypt密码加密(带源码) 原文地址:http://websystique.com/spring-security/spri ...

  9. spring security源码分析之web包分析

    Spring 是一个非常流行和成功的 Java 应用开发框架.Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方案.一般来说,Web 应用的安全性包括 ...

最新文章

  1. 滴滴信控系统开放试用  鼓励行业人员进行更广泛交通研究
  2. C++和C#实现剪切板数据交互
  3. 巴菲特的价值投资的第二版本
  4. OpenCASCADE:要求
  5. 如何在SAP Kyma的控制台里扩展新的UI
  6. go micro java_Java Micro Framework:您无法忽略的新趋势
  7. 1005 继续(3n+1)猜想(25 分)
  8. 9.27 csp-s模拟测试53 u+v+w
  9. [swift] LeetCode 338. Counting Bits
  10. cmake之TEST与TEST_F用法(五)
  11. Linux管理员权限失败su Authentication failure
  12. LINUX使用sed,字串中包含特殊字符怎么办?
  13. cc2430的ram和rom的划分
  14. Matlab/simulink 2018a利用 powergui 进行FFT分析(傅里叶分析谐波)
  15. 计算机网络cpu规格,国产CPU路漫漫 历数龙芯各型号技术指标
  16. 安装python时无法访问筛选器,如何使用Python筛选器功能(详解)
  17. 谈我们的团队文化建设
  18. Android Automotive车载嵌入式系统
  19. VMware vSphere核心组件
  20. opencv 直方图比较

热门文章

  1. C#实现发送钉钉工作通知消息
  2. Ubuntu 12.04.5安装TL-WN725N 2.0无线网卡驱动
  3. 游戏浅谈4-部落战争(COC)
  4. JavaScript(3)-- 数据类型
  5. arma自回归matlab,基于MATLAB的自回归移动平均模型_ARMA_在股票预测中的应用
  6. 2017届中兴校招综合面试之软件测试工程师面试经历
  7. python字符串转整数_如何在Python中将字符串转换为整数
  8. C# 多线程与高并发处理并且具备暂停、继续、停止功能
  9. JS中添加元素的方法
  10. 求两个有序数组的中位数