Вы можете передать весь запрос своему объекту MethodSecurityExpressionOperations, а затем извлечь нужные заголовки. В вашем случае используйте это:
public class CustomMethodSecurityExpressionRoot extends SecurityExpressionRoot implements MethodSecurityExpressionOperations {
public boolean customAuthCheck(HttpServletRequest request) {
String jwtString = request.getHeader("Authorization");
// decode/process the JWT
// check authorization
}
}
Затем в вашем контроллере:
@PreAuthorize(customAuthCheck(#request))
@RestController
public String getRestrictedInfo(HttpServletRequest request) {
//
}
Вы также можете передать другие параметры вместе с заголовком, если хотите, если они часть сигнатуры метода, например:
@PreAuthorize(customAuthCheck(#param1, #request))
public String getRestrictedInfo(HttpServletRequest request, @RequestParam String param1) {
//
}