Spring security 中的hasAuthority()和hasRole() 有啥区别?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring security 中的hasAuthority()和hasRole() 有啥区别?相关的知识,希望对你有一定的参考价值。
既然返回的User对象(UserDetails的实现类)的第三个参数是一个 集合 Collection<? extends GrantedAuthority> authorities,且集合里的泛型是GrantedAuthority接口,我都放实现类new SimpleGrantedAuthority(???)。???的字符串,我又放角色的字符串和权限的字符串,那框架怎么能区分那几个字符串是权限哪几个是角色呢?
既然分不出来那为什么会有两个has方法??
所以权限与Role是可以区分开来的。追问
原来因此,集合里有ROLE_前缀的就是角色,没有就是权限,如果我不用这个前缀,是不是会报错?那权限应该就没这个要求把,
追答权限没有这个要求。这个你在用HttpSecurity进行配置的之后,看一下对应配置源码就知道了。很简单,不是那种很晦涩的代码。
还有一点要说明,以免产生误解,角色的开头“ROLE_”,是由框架进行插入的,用户并不需要手动插入,如果手动插入ROLE_,在进行hasRole()判断时,反而会报错。错误信息会提示你,角色的ROLE_,由框架自行插入。
Spring Security入门(3-8)Spring Security获取session中的UserDetail
以上是关于Spring security 中的hasAuthority()和hasRole() 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
spring security 3 中的@Secured 和@PreAuthorize 有啥区别?
spring-security-oauth2中的HttpSecurity配置问题
spring-security-oauth中的JdbcApprovalStore(ApprovalStore)有啥用?
如何使用 Spring Security 管理 Spring Boot 中的会话?