Class AuthenticationPrincipalArgumentResolver
java.lang.Object
org.springframework.security.messaging.handler.invocation.reactive.AuthenticationPrincipalArgumentResolver
- All Implemented Interfaces:
org.springframework.messaging.handler.invocation.reactive.HandlerMethodArgumentResolver
public class AuthenticationPrincipalArgumentResolver
extends Object
implements org.springframework.messaging.handler.invocation.reactive.HandlerMethodArgumentResolver
Allows resolving the
Authentication.getPrincipal()
using the
AuthenticationPrincipal
annotation. For example, the following
Controller
:
@Controller public class MyController { @MessageMapping("/im") public void im(@AuthenticationPrincipal CustomUser customUser) { // do something with CustomUser } }
Will resolve the CustomUser argument using Authentication.getPrincipal()
from
the ReactiveSecurityContextHolder
. If the Authentication
or
Authentication.getPrincipal()
is null, it will return null. If the types do not
match, null will be returned unless
AuthenticationPrincipal.errorOnInvalidType()
is true in which case a
ClassCastException
will be thrown.
Alternatively, users can create a custom meta annotation as shown below:
@Target({ ElementType.PARAMETER }) @Retention(RetentionPolicy.RUNTIME) @AuthenticationPrincipal public @interface CurrentUser { }
The custom annotation can then be used instead. For example:
@Controller public class MyController { @MessageMapping("/im") public void im(@CurrentUser CustomUser customUser) { // do something with CustomUser } }
- Since:
- 5.2
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionreactor.core.publisher.Mono<Object>
resolveArgument
(org.springframework.core.MethodParameter parameter, org.springframework.messaging.Message<?> message) void
setAdapterRegistry
(org.springframework.core.ReactiveAdapterRegistry adapterRegistry) Sets theReactiveAdapterRegistry
to be used.void
setBeanResolver
(org.springframework.expression.BeanResolver beanResolver) Sets theBeanResolver
to be used on the expressionsvoid
setTemplateDefaults
(AnnotationTemplateExpressionDefaults templateDefaults) Configure AuthenticationPrincipal template resolutionboolean
supportsParameter
(org.springframework.core.MethodParameter parameter)
-
Constructor Details
-
AuthenticationPrincipalArgumentResolver
public AuthenticationPrincipalArgumentResolver()
-
-
Method Details
-
setBeanResolver
public void setBeanResolver(org.springframework.expression.BeanResolver beanResolver) Sets theBeanResolver
to be used on the expressions- Parameters:
beanResolver
- theBeanResolver
to use
-
setAdapterRegistry
public void setAdapterRegistry(org.springframework.core.ReactiveAdapterRegistry adapterRegistry) Sets theReactiveAdapterRegistry
to be used.- Parameters:
adapterRegistry
- theReactiveAdapterRegistry
to use. Cannot be null. Default isReactiveAdapterRegistry.getSharedInstance()
-
supportsParameter
public boolean supportsParameter(org.springframework.core.MethodParameter parameter) - Specified by:
supportsParameter
in interfaceorg.springframework.messaging.handler.invocation.reactive.HandlerMethodArgumentResolver
-
resolveArgument
public reactor.core.publisher.Mono<Object> resolveArgument(org.springframework.core.MethodParameter parameter, org.springframework.messaging.Message<?> message) - Specified by:
resolveArgument
in interfaceorg.springframework.messaging.handler.invocation.reactive.HandlerMethodArgumentResolver
-
setTemplateDefaults
Configure AuthenticationPrincipal template resolutionBy default, this value is
null
, which indicates that templates should not be resolved.- Parameters:
templateDefaults
- - whether to resolve AuthenticationPrincipal templates parameters- Since:
- 6.4
-