3

コントローラーで、Spring Securityが提供する組み込み式(hasRole([role])やisFullyAuthenticated()など)に類似したいくつかの(Java)メソッドを使用したいと思います。

これらのメソッドの場所と、コントローラーのJavaメソッド内でそれらを呼び出す方法を知っていますか(Spring ELは使用したくない、プレーンJavaを使用したい)。例:

SomeStaticSpringSecutityClass.isFullyAuthenticated();

編集:

SecurityContextHolder.getContext().getAuthentication().isAuthenticated()

実際には機能しません。このメソッドは、ユーザーが「匿名」として認証されている場合にもtrueを返します。上記のSpringSecurityドキュメントへのリンクを参照してください。

isAuthenticated()ユーザーが匿名でない場合はtrueを返します

代わりに、次のようなものを使用する必要があります。

public boolean isAuthenticated() {
    Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
    return !(authentication == null || authentication instanceof AnonymousAuthenticationToken);
}

しかしとにかく:私はロジックを再び実装したくありません。それはすでにSpringSecurityのどこかに実装されています。さらに

SecurityContextHolder.getContext().getAuthentication()

isFullyAuthenticated()やhasRole()のようなメソッドは提供していません。

4

2 に答える 2

2

org.springframework.security.core.contex.SecurityContextHolderを見てください。たとえば、現在のユーザーが認証されているかどうかを確認するには:

SecurityContextHolder.getContext().getAuthentication().isAuthenticated()
于 2012-10-15T13:03:13.477 に答える