spring security3 统计在线用户

首先,我们需要使得 ConcurrentSessionFilter 生效并在 spring-security.xml 配置。
[html]  view plain copy
  1. <http auto-config="true" use-expressions="true">  
  2.     <!-- Uncomment to limit the number of sessions a user can have -->  
  3.     <session-management invalid-session-url="/index.do">  
  4.         <concurrency-control max-sessions="1"  
  5.             error-if-maximum-exceeded="false"/>  
  6.     </session-management>   
  7. </http>  
其次,需要在 web.xml 描述文件中配置中使得 o.s.s.web.session.HttpSessionEventPublisher 生效,这样 servelt 容器将会通知 Spring Security session 生命周期的事件(通过 HttpSessionEventPublisher )。
[html]  view plain copy
  1. <listener>  
  2.     <listener-class>  
  3.         org.springframework.web.context.ContextLoaderListener  
  4.     </listener-class>  
  5. </listener>  
  6. <listener>  
  7.     <listener-class>  
  8.         org.springframework.security.web.session.HttpSessionEventPublisher  
  9.     </listener-class>  
  10. </listener>  
然后,借助于使用session注册跟踪(通过session并发控制),实现显示系统中当前活跃用户的数量。
         让我们在BaseController中添加一个简单的方法以及bean自动织入。@Autowired
[java]  view plain copy
  1. @Autowired  
  2. SessionRegistry sessionRegistry;  
  3. @ModelAttribute("numUsers")  
  4. public int getNumberOfUsers() {  
  5.    return sessionRegistry.getAllPrincipals().size();  
  6. }  
可以看到这暴露了一个能够在 Spring MVC JSP 页面中能够使用的属性。
最后,我们可以添加一个页脚 footer.jsp JBCP Pets 站点中并使用这个属性。
[html]  view plain copy
  1. <body>  
  2.     <div id="footer">  
  3.         ${numUsers} user(s) are logged in!  
  4.     </div>  
  5. </body>  
如果你重新启动应用并登录,能够在每个页面的底部看到活动用户的数量。
参考资料:《Spring Security3》第六章第三部分翻译(Session的管理和并发)
                 http://lengyun3566.iteye.com/blog/1198836
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值