Добрый день!
Возможно, что это не самое лучшее решение, но я бы сделал это следующим образом:
Я бы использовал
@ControllerAdvice
@ControllerAdvice
public class GlobalControllerAdvice {
// Текущий авторизованный пользователь
@ModelAttribute("user")
public User getUserProfile(
@AuthenticationPrincipal UserDetails currentUser
) {
if(
SecurityContextHolder.getContext().getAuthentication() != null &&
SecurityContextHolder.getContext().getAuthentication().isAuthenticated() &&
!(SecurityContextHolder.getContext().getAuthentication() instanceof AnonymousAuthenticationToken)
) {
return (User) userService.findUserByEmail(currentUser.getUsername());
} else {
return null;
}
}
}
Соответственно, если пользователь авторизован, то вы получите user, а если нет, то null.
Ну и дальше в любом шаблоне можете выводить информацию о пользователе БЕЗ использование этого кода для каждого контроллера:
if(user != null){
model.addAttribute("user", user.getUsername());
return "/index";
} else {
model.addAttribute("user", "Аноним");
return "/index";
}