Authentication auth = SecurityContextHolder.getContext().getAuthentication();
Collection<? extends GrantedAuthority> roles = auth.getAuthorities();
roles
のような特定の権限が含まれているかどうかを確認するにはどうすればよい"ROLE_ADMIN"
ですか?
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
Collection<? extends GrantedAuthority> roles = auth.getAuthorities();
roles
のような特定の権限が含まれているかどうかを確認するにはどうすればよい"ROLE_ADMIN"
ですか?
組み込み関数はわかりませんが、使用できるユーティリティメソッドは次のとおりです。
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;
}
GrantedAuthority
リスト内のの実装がわからない場合は、次のようにロバートの答えが正しいです。
auth.getAuthorities().stream().anyMatch(ga -> ga.getAuthority().equals("ROLE_ADMIN"))
ただし、それらがすべてになることがわかっている場合は、次のようにSimpleGrantedAuthority
することができます。
auth.getAuthorities().contains(new SimpleGrantedAuthority("ROLE_ADMIN"))