クラス AuthenticationPrincipalArgumentResolver

java.lang.ObjectSE
org.springframework.security.messaging.context.AuthenticationPrincipalArgumentResolver
実装されたすべてのインターフェース:
org.springframework.messaging.handler.invocation.HandlerMethodArgumentResolver

public final class AuthenticationPrincipalArgumentResolver extends ObjectSE implements org.springframework.messaging.handler.invocation.HandlerMethodArgumentResolver
AuthenticationPrincipal アノテーションを使用して Authentication.getPrincipal() を解決できます。例: 次の Controller:
 @Controller
 public class MyController {
     @MessageMapping("/im")
     public void im(@AuthenticationPrincipal CustomUser customUser) {
         // do something with CustomUser
     }
 }
 

SecurityContextHolder から Authentication.getPrincipal() を使用して CustomUser 引数を解決します。Authentication または Authentication.getPrincipal() が null の場合、null が返されます。型が一致しない場合、AuthenticationPrincipal.errorOnInvalidType() が true でない限り null が返されます。true の場合は ClassCastExceptionSE がスローされます。

または、ユーザーは以下に示すようにカスタムメタアノテーションを作成できます。

 @Target({ ElementType.PARAMETER })
 @Retention(RetentionPolicy.RUNTIME)
 @AuthenticationPrincipal
 public @interface CurrentUser {
 }
 

代わりにカスタムアノテーションを使用できます。例:

 @Controller
 public class MyController {
     @MessageMapping("/im")
     public void im(@CurrentUser CustomUser customUser) {
         // do something with CustomUser
     }
 }
 
導入:
4.0
  • コンストラクターの詳細

    • AuthenticationPrincipalArgumentResolver

      public AuthenticationPrincipalArgumentResolver()
  • メソッドの詳細

    • supportsParameter

      public boolean supportsParameter(org.springframework.core.MethodParameter parameter)
      次で指定:
      インターフェース org.springframework.messaging.handler.invocation.HandlerMethodArgumentResolversupportsParameter 
    • resolveArgument

      public ObjectSE resolveArgument(org.springframework.core.MethodParameter parameter, org.springframework.messaging.Message<?> message)
      次で指定:
      インターフェース org.springframework.messaging.handler.invocation.HandlerMethodArgumentResolverresolveArgument 
    • setSecurityContextHolderStrategy

      public void setSecurityContextHolderStrategy(SecurityContextHolderStrategy securityContextHolderStrategy)
      使用する SecurityContextHolderStrategy を設定します。デフォルトのアクションは、SecurityContextHolder に格納されている SecurityContextHolderStrategy を使用することです。
      導入:
      5.8