spring security中Authority、Role的区别及说明
作者:cngkqy
这篇文章主要介绍了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,大家根据自己的实际情况灵活选用就好啦,希望给大家解释清楚了~
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。