2

isFullyAuthenticated()Spring Security式が提供するものと同様に、完全に認証されたユーザーかどうかを確認したいコントローラーがあります。それ、どうやったら出来るの?

以下のTomasz Nurkiewiczの回答に基づいて使用し、org.springframework.security.access.expression.SecurityExpressionRootから実装を盗んでいるソリューション

 public class SpringSecurityUtils {
    private static final AuthenticationTrustResolver trustResolver = new AuthenticationTrustResolverImpl();

    public static boolean isFullyAuthenticated()
    {
        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
        return !trustResolver.isAnonymous(authentication) && !trustResolver.isRememberMe(authentication);
    }
}
4

2 に答える 2

2

SecurityExpressionRootandのソース コードを見るとAuthenticationTrustResolverImpl、次の条件を使用できるようです。

public boolean isFullyAuthenticated(Authentication auth) {
    return !(auth instanceof AnonymousAuthenticationToken || 
             auth instanceof RememberMeAuthenticationToken);
}

たとえば、次を使用して認証を取得する場所:

SecurityContextHolder.getContext().getAuthentication()
于 2012-05-16T19:25:07.293 に答える
1

またはのisUserInRole()メソッドを文字列を使用して呼び出すことができます。SecurityContextHolderAwareRequestWrapperHttpServletRequestIS_AUTHENTICATED_FULLY

request.isUserInRole("IS_AUTHENTICATED_FULLY");
于 2012-05-16T20:36:10.123 に答える