spring security中Authority、Role的区别及说明
spring security中Authority、Role的区别
最近在研究spring security时,大概研究了一下Authority、Role之间到底有什么本质的区别。
如果你使用的是hasRole方法来判断你的登录用户是否有权限访问某个接口,那么你初始化User时,放入的GrantedAuthority的字符就需要包含ROLE_前缀,
参见下图红箭头:

接口访问权限配置应该是这样:

或者是这样:

如果你使用的是hasAuthority,那么你初始化User时,放入的GrantedAuthority的字符就不需要包含ROLE_前缀了,
参见下图红箭头:

接口访问权限配置应该是这样:

或者是这样:

我使用的是spring security 5.1.6版本
从源码的角度可以看出使用不同的hasAuthority、hasRole方法判断权限时的区别,其实他们最终调用的都是hasAnyAuthorityName()方法,唯一不同的就是hasRole()在调用时,传递了前缀defaultRolePrefix,这就导致了他们两者之间比较的字符产生了差异。
spring security应该想代表的意思就是权限字符加了ROLE_就是角色Role,如果没有加就是一个权限Authority,大家根据自己的实际情况灵活选用就好啦,希望给大家解释清楚了~


总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Spring Bean初始化及@PostConstruc执行顺序示例详解
本文给大家介绍Spring Bean初始化及@PostConstruc执行顺序,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧2025-07-07
Java使用 Spire.XLS 库合并Excel文件的常见方法详解
在企业级应用开发中,Excel文件处理几乎是每个Java开发者都会遇到的任务,下面小编将为大家详细讲讲如何基于Spire.XLS for Java实现Excel文件合并,有需要的可以了解下2025-10-10
springboot ErrorPageFilter的实际应用详解
这篇文章主要介绍了springboot ErrorPageFilter的实际应用详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-01-01
在SpringBoot中使用@Value注解来设置默认值的方法
Spring Boot提供了一种使用注解设置默认值的方式,即使用 @Value 注解,下面这篇文章主要给大家介绍了关于如何在SpringBoot中使用@Value注解来设置默认值的相关资料,需要的朋友可以参考下2023-10-10
WebSocket整合SSM(Spring,Struts2,Maven)的实现示例
这篇文章主要介绍了WebSocket整合SSM(Spring,Struts2,Maven)的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-01-01


最新评论