在Spring 3.0中管理所有用户的会话数据

时间:2013-03-27 19:21:08

标签: java spring security session spring-mvc

正如标题所说,我有一个spring mvc安全实现,效果很好,但我想在Web应用程序中管理用户登录。

我需要添加会话信息,例如"客户端IP地址,登录时间,用户的上次活动和登录状态(如果我想将其注销)"

我已经阅读了很多论坛,示例,甚至是春季文档,并且无法找到我需要的内容。

甚至尝试将bean添加到我的安全xml中,在我的LoginController中添加了@Resource sessionManager,并且出现了504错误。

另一个问题:有没有办法获取客户端IP地址?我现在正通过jquery用另一个网站发帖来获取它......但那很脏。

提前致谢。

1 个答案:

答案 0 :(得分:0)

为了在所有会话中进行操作,您需要更高级别的'而不是会话,这意味着ApplicationContext。

通过扩展ServletContextListener并向web.xml添加侦听器定义,我做了类似的事情。

基本上: 在contextInitialized(ServletContextEvent事件)中,使用

添加侦听器的实例
event.getServletContext().setAttribute("myContextListener", this);

当您需要某些内容时,请使用

的某些变体将对象从Context中移除
(MyContextListener)request.getSession().getServletContext()
    .getAttribute("myContextListener");

关于如何做到这一点' The Spring Way'(tm),好吧,我不知道......但是。