Если вы просто хотите напечатать имя пользователя на страницах, возможно, вам понравится это решение.Он свободен от приведения объектов и работает без Spring Security:
@RequestMapping(value = "/index.html", method = RequestMethod.GET)
public ModelAndView indexView(HttpServletRequest request) {
ModelAndView mv = new ModelAndView("index");
String userName = "not logged in"; // Any default user name
Principal principal = request.getUserPrincipal();
if (principal != null) {
userName = principal.getName();
}
mv.addObject("username", userName);
// By adding a little code (same way) you can check if user has any
// roles you need, for example:
boolean fAdmin = request.isUserInRole("ROLE_ADMIN");
mv.addObject("isAdmin", fAdmin);
return mv;
}
Примечание: добавлен параметр HttpServletRequest .
Работает нормально, потому что Spring внедряет свои собственные объекты (wrappers) для HttpServletRequest, Principal и т. д., поэтому вы можете использовать стандартные методы Java для получения информации о пользователе.