Class AuthenticationPrincipalArgumentResolver
- java.lang.Object
-
- org.springframework.security.web.method.annotation.AuthenticationPrincipalArgumentResolver
-
- All Implemented Interfaces:
org.springframework.web.method.support.HandlerMethodArgumentResolver
public final class AuthenticationPrincipalArgumentResolver extends java.lang.Object implements org.springframework.web.method.support.HandlerMethodArgumentResolverAllows resolving theAuthentication.getPrincipal()using theAuthenticationPrincipalannotation. For example, the followingController:@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 theSecurityContextHolder. If theAuthenticationorAuthentication.getPrincipal()is null, it will return null. If the types do not match, null will be returned unlessAuthenticationPrincipal.errorOnInvalidType()is true in which case aClassCastExceptionwill 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:
- 4.0
-
-
Constructor Summary
Constructors Constructor Description AuthenticationPrincipalArgumentResolver()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.ObjectresolveArgument(org.springframework.core.MethodParameter parameter, org.springframework.web.method.support.ModelAndViewContainer mavContainer, org.springframework.web.context.request.NativeWebRequest webRequest, org.springframework.web.bind.support.WebDataBinderFactory binderFactory)voidsetBeanResolver(org.springframework.expression.BeanResolver beanResolver)Sets theBeanResolverto be used on the expressionsvoidsetSecurityContextHolderStrategy(SecurityContextHolderStrategy securityContextHolderStrategy)Sets theSecurityContextHolderStrategyto use.booleansupportsParameter(org.springframework.core.MethodParameter parameter)
-
-
-
Method Detail
-
supportsParameter
public boolean supportsParameter(org.springframework.core.MethodParameter parameter)
- Specified by:
supportsParameterin interfaceorg.springframework.web.method.support.HandlerMethodArgumentResolver
-
resolveArgument
public java.lang.Object resolveArgument(org.springframework.core.MethodParameter parameter, org.springframework.web.method.support.ModelAndViewContainer mavContainer, org.springframework.web.context.request.NativeWebRequest webRequest, org.springframework.web.bind.support.WebDataBinderFactory binderFactory)- Specified by:
resolveArgumentin interfaceorg.springframework.web.method.support.HandlerMethodArgumentResolver
-
setBeanResolver
public void setBeanResolver(org.springframework.expression.BeanResolver beanResolver)
Sets theBeanResolverto be used on the expressions- Parameters:
beanResolver- theBeanResolverto use
-
setSecurityContextHolderStrategy
public void setSecurityContextHolderStrategy(SecurityContextHolderStrategy securityContextHolderStrategy)
Sets theSecurityContextHolderStrategyto use. The default action is to use theSecurityContextHolderStrategystored inSecurityContextHolder.- Since:
- 5.8
-
-