Authentication auth = SecurityContextHolder.getContext().getAuthentication();
Collection<? extends GrantedAuthority> roles = auth.getAuthorities();
How can I check if roles
contains a specific authority like "ROLE_ADMIN"
?
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
Collection<? extends GrantedAuthority> roles = auth.getAuthorities();
How can I check if roles
contains a specific authority like "ROLE_ADMIN"
?
Robert's answer is correct if you don't know the implementation of the GrantedAuthority
in the list, as is this:
auth.getAuthorities().stream().anyMatch(ga -> ga.getAuthority().equals("ROLE_ADMIN"))
If however, you know they'll all be SimpleGrantedAuthority
, then you can do this:
auth.getAuthorities().contains(new SimpleGrantedAuthority("ROLE_ADMIN"))
I don't know of any built-in function, but here is a utility method you could use.
if (userHasAuthority("ROLE_ADMIN")) { ... }
.
public static boolean userHasAuthority(String authority)
{
List<GrantedAuthority> authorities = getUserAuthorities();
for (GrantedAuthority grantedAuthority : authorities) {
if (authority.equals(grantedAuthority.getAuthority())) {
return true;
}
}
return false;
}