You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Spring Security中拦截hasRole配置的ROLE_MANAGER角色访问权限

解决方法

你需要的权限逻辑可以通过Spring Security的SpEL表达式的非运算符直接实现,不需要罗列所有允许的角色,适配后续新增角色的场景。

XML标签配置修改

把你现有配置的access属性值替换为否定ROLE_MANAGER的判断即可,最终写法如下:

<security:authorize access="!hasRole('ROLE_MANAGER')">
    ...
</security:authorize>

该配置的逻辑为:只要当前登录用户的角色不是ROLE_MANAGER,就允许访问对应内容,自动覆盖所有其他角色,不需要手动维护允许的角色列表。

可选:Java配置类对应写法

如果你使用Java类做权限配置,对应拦截逻辑的写法如下:

http.authorizeRequests()
    // 替换为你需要拦截的资源路径
    .antMatchers("/target/path/**")
    .access("!hasRole('ROLE_MANAGER')");

说明

Spring Security 4及以上版本中,hasRole会自动给参数拼接ROLE_前缀,你也可以使用!hasAuthority('ROLE_MANAGER')写法,二者效果完全一致。

内容的提问来源于stack exchange,提问作者Kira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 03:06:04