7
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
Collection<? extends GrantedAuthority> roles = auth.getAuthorities();

rolesのような特定の権限が含まれているかどうかを確認するにはどうすればよい"ROLE_ADMIN"ですか?

4

2 に答える 2

6

組み込み関数はわかりませんが、使用できるユーティリティメソッドは次のとおりです。

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;
}
于 2012-09-27T22:07:39.657 に答える
6

GrantedAuthorityリスト内のの実装がわからない場合は、次のようにロバートの答えが正しいです。

auth.getAuthorities().stream().anyMatch(ga -> ga.getAuthority().equals("ROLE_ADMIN"))

ただし、それらがすべてになることがわかっている場合は、次のようにSimpleGrantedAuthorityすることができます。

auth.getAuthorities().contains(new SimpleGrantedAuthority("ROLE_ADMIN"))
于 2016-07-11T13:55:28.610 に答える