@Target(value={PARAMETER,ANNOTATION_TYPE})
@Retention(value=RUNTIME)
@Documented
public @interface AuthenticationPrincipal
Authentication.getPrincipal()
to a method
argument.Modifier and Type | Optional Element and Description |
---|---|
boolean |
errorOnInvalidType
True if a
ClassCastException should be thrown when the current
Authentication.getPrincipal() is the incorrect type. |
java.lang.String |
expression
If specified will use the provided SpEL expression to resolve the principal.
|
public abstract boolean errorOnInvalidType
ClassCastException
should be thrown when the current
Authentication.getPrincipal()
is the incorrect type. Default is false.public abstract java.lang.String expression
For example, perhaps the user wants to resolve a CustomUser object that is final and is leveraging a UserDetailsService. This can be handled by returning an object that looks like:
public class CustomUserUserDetails extends User { // ... public CustomUser getCustomUser() { return customUser; } }Then the user can specify an annotation that looks like:
@AuthenticationPrincipal(expression = "customUser")