Spring Security already stores the UserDetailsauthenticated user in a session for you.
So, the easiest way to save MyUserin a session is to implement a custom UserDetailsone containing a link to 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" />