此问题在此处已有答案:
Difference between Role and GrantedAuthority in Spring Security(4个答案)
三年前就关门了。
假设我有一个用户,该用户具有以下身份验证:
List<GrantedAuthority> grantedAuthorities = new ArrayList<>();
grantedAuthorities.add(new SimpleGrantedAuthority("READ_PRODUCT"));
grantedAuthorities.add(new SimpleGrantedAuthority("WRITE_PRODUCT"));
SecurityContextHolder.getContext().setAuthentication(new UsernamePasswordAuthenticationToken("usr", "pwd", grantedAuthorities));
在安全检查中,我应该检查用户是否具有访问API的权限。我做了以下工作来实现它:
http
.httpBasic().disable()
.authorizeRequests()
.antMatchers(HttpMethod.GET, "/product/**").hasAuthority("READ_PRODUCT");
这里我使用hasAuthority()
来检查用户是否具有正确的权限,但我发现还有一个名为hasRole()
的方法,但我不知道这两个方法之间的区别是什么?有人能解释一下区别吗?如果我想在这里使用hasRole()
,我该如何在这里使用它?我试图用hasRole()
替换hasAuthority()
,但没有成功
1条答案
按热度按时间yc0p9oo01#
hasRole()
定义角色(例如:“员工”或“访客”),而hasAuthority()
定义权限(例如:一个员工只能使用正门,但另一个员工也可以使用后门