В моих контроллерах, когда мне нужен активный (вошедший в систему) пользователь, я делаю следующее, чтобы получить мою реализацию UserDetails
:
User activeUser = (User)SecurityContextHolder.getContext().getAuthentication().getPrincipal();
log.debug(activeUser.getSomeCustomField());
Она работает нормально, но я бы думаю, Spring может облегчить жизнь в таком случае. Есть ли способ автоматически подключить UserDetails
к контроллеру или методу?
Например, что-то вроде:
public ModelAndView someRequestHandler(Principal principal) { ... }
Но вместо получая UsernamePasswordAuthenticationToken
, вместо этого я получаю UserDetails
?
Я ищу элегантное решение. Есть идеи?
Можно попробовать это: При помощи Объекта Аутентификации от Spring мы можем получить Пользовательские детали от него в методе контроллера. Ниже пример, путем передачи объекта Аутентификации в методе контроллера наряду с аргументом. После того как пользователь аутентифицируется, детали заполняются в Объекте Аутентификации.
@GetMapping(value = "/mappingEndPoint") <ReturnType> methodName(Authentication auth) {
String userName = auth.getName();
return <ReturnType>;
}