关于SpringSecurity出现Failed to evaluate expression ‘ps.hasAuthority(‘role‘)‘

1. 问题描述

在使用SpringSecurity对接口进行权限校验时,报错java.lang.IllegalArgumentException: Failed to evaluate expression 'ps.hasAuthority('role')'

2. 解决方案

2.1 查看是否添加注解

对于SpringSecurity对配置类,我们需要添加注解@EnableGlobalMethodSecurity(prePostEnabled = true)

java 复制代码
@EnableGlobalMethodSecurity(prePostEnabled = true)
@Configuration	
public class AdminSecurityConfig extends WebSecurityConfigurerAdapter {
	//...
}

2.2 校验接口实现类的名称

  • 对于直接使用@Service注解标识的接口实现类,其注入Spring容器后,对应bean名称的首字母会变为小写。例如注入的实现类为PermissionServiceImpl,其bean名称为permissionServiceImpl
  • 对于使用@Service(value = "xxx"),其对应bean的名称就为xxx,直接使用即可。

2.3 校验是否添加@符号进行标识。

对应接口上添加了@PreAuthorize注解后,参数正确格式为@beanName.methodName(roleName)。例如:

java 复制代码
@PreAuthorize("@permissionServiceImpl.hasPermission('role')")
相关推荐
码上小翔哥2 分钟前
Jackson 配置深度解析
java·后端
qq_2518364574 分钟前
基于java 私厨美食共享平台系统设计与实现(有源码)
java·开发语言·美食
未秃头的程序猿8 分钟前
如何用 AI 写出符合规范的 Java 代码?我总结了 7 条有效建议
java·后端·ai编程
kyle~21 分钟前
Linux时间系统1 --- 正确使用时间
java·linux·服务器
吴声子夜歌30 分钟前
Java——泛型
java·开发语言·泛型
XiYang-DING31 分钟前
【Java EE】 HTTP协议
java·http·java-ee
敖正炀1 小时前
JDBC 批处理内核:addBatch、executeBatch 与驱动 SQL 重写
java
计算机安禾1 小时前
【c++面向对象编程】第9篇:友元(friend):破坏封装的“特权”——真的有害吗?
java·c++·log4j
LJianK11 小时前
乐观锁算线程同步吗?
java·开发语言·jvm
用户298698530141 小时前
Java 后端处理 Word 修订:批量接受与拒绝的自动化方案
java·后端