Spring Security уже хранит для вас UserDetails
аутентифицированного пользователя в сеансе.
Итак, самый простой способ сохранить MyUser
в сеансе - реализовать пользовательский UserDetails
, содержащий ссылку на MyUser
:
public class MyUserDetails extends User {
private MyUser myUser;
public MyUserDetails(..., MyUser myUser) {
super(...);
this.myUser = myUser;
}
public MyUser getMyUser() {
return myUser;
}
...
}
и верните его из вашего UserDetailsService
:
MyUser employee = employeesApi.getByUserName(userName);
user = new MyUserDetails(..., myUser);
Тогда вы можете легко получить доступ к MyUser
через контекст безопасности:
MyUser myUser = ((MyUserDetails) SecurityContextHolder
.getContext().getAuthentication().getPrincipal()).getMyUser();
В контроллере Spring MVC:
@RequestMapping(...)
public ModelAndView someController(..., Authentication auth) {
MyUser myUser = ((MyUserDetails) auth.getPrincipal()).getMyUser();
...
}
В JSP:
<security:authentication var = "myUser" property="principal.myUser" />