使用Spring在会话中设置用户对象


问题内容

我想将User包含用户详细信息的对象设置为我的Spring应用程序中的会话。

当我想在各个JSP页面上检索登录用户的详细信息时,我想使用该会话对象。

我正在使用Spring 3和Spring Security 3

我想在不是控制器的自定义身份验证类中的会话中设置User对象

我该如何实现?


问题答案:

我假设您有 一些UserDetailsService类的实现。您可以返回从User实现的任何对象。然后,该对象会自动放置在您的HTTP会话中。然后可以使用以下方法检索它:UserDetailsloadUserByUsername()

User user = (User)SecurityContextHolder.
    getContext().getAuthentication().getPrincipal();

Spring Security自动处理您需要的一切。