【问题标题】:Spring MVC keep user data in the sessionSpring MVC 将用户数据保存在会话中
【发布时间】:2014-09-03 14:03:49
【问题描述】:

我正在使用 Spring MVCHibernate 创建应用程序,人们可以在其中注册并在他们的帐户中存储一些数据。 我创建了注册和登录过程。现在我有一个问题,我怎样才能保持用户会话?我不想在我的应用程序的每个页面中保留 user id。 例如:一旦用户登录,他就会到达页面

someurl/overview/1

其中 id 是用户的 ID。我希望每个登录用户看起来像这样:

someurl/overview/

如何使用 Spring 在会话中保存用户数据并在用户关闭站点然后打开它时保存它的最佳实践是什么?

提前致谢。

【问题讨论】:

标签: spring session spring-mvc


【解决方案1】:

您可以通过多种方式在会话中保存用户数据.. 最简单的是:

public ModelAndView yourMethod(HttpSession session){

    session.setAttribute("user", 1); 
    return new ModelAndView("home");

}

如果您使用 spring 组件,您将始终可以使用会话,因此只需添加此参数并使用它。

编辑: 还可以使用 Spring 的 session 属性: http://fruzenshtein.com/spring-mvc-session/ 如果它满足您的要求。

编辑(感谢@Serge Ballesta 将其放入 cmets,仅更新帖子仅供参考)

即使 API 没有强制执行,规范也要求所有 会话属性是可序列化的。想想如果存储超过 一个身份证。

【讨论】:

  • 如何在另一个控制器中获取此会话属性?
  • 如果您使用的是带有控制器注解的控制器,那么只需在参数中添加 HttpSession 即可。没有额外的工作。
  • Spring 维护会话本身,并在您需要时在其组件范围内为您提供。
  • 我正在考虑在另一个控制器中,如果不创建 HttpSession 类的新对象,我将无法获取会话属性。
  • 注意:即使 API 不强制执行,规范要求所有会话属性为 Serializable。如果存储的不仅仅是一个 id,请考虑一下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-25
  • 2012-04-05
  • 2012-02-28
  • 1970-01-01
  • 1970-01-01
  • 2012-10-21
  • 1970-01-01
相关资源
最近更新 更多