クラス CurrentSecurityContextArgumentResolver

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

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

ReactiveSecurityContextHolder を使用して SecurityContext 引数を解決します。SecurityContext が空の場合、null が返されます。型が一致しない場合、CurrentSecurityContext.errorOnInvalidType() が true でない限り null が返され、その場合は ClassCastExceptionSE がスローされます。

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

 @Target({ ElementType.PARAMETER })
 @Retention(RetentionPolicy.RUNTIME)
 @CurrentSecurityContext(expression = "authentication?.principal")
 public @interface CurrentUser {
 }
 

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

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

    • CurrentSecurityContextArgumentResolver

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

    • setBeanResolver

      public void setBeanResolver(org.springframework.expression.BeanResolver beanResolver)
      式で使用する BeanResolver を設定します
      パラメーター:
      beanResolver - 使用する BeanResolver 
    • setAdapterRegistry

      public void setAdapterRegistry(org.springframework.core.ReactiveAdapterRegistry adapterRegistry)
      使用する ReactiveAdapterRegistry を設定します。
      パラメーター:
      adapterRegistry - 使用する ReactiveAdapterRegistry null にすることはできません。デフォルトは ReactiveAdapterRegistry.getSharedInstance() です
    • supportsParameter

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

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