spring-security Spring Security中的hasRole()和hasAuthority()有什么区别[duplicate]

qjp7pelc  于 2022-11-11  发布在  Spring
关注(0)|答案(1)|浏览(241)

此问题在此处已有答案

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(),但没有成功

yc0p9oo0

yc0p9oo01#

hasRole()定义角色(例如:“员工”或“访客”),而hasAuthority()定义权限(例如:一个员工只能使用正门,但另一个员工也可以使用后门

相关问题