<http auto-config="true" use-expressions="true">
<!-- Uncomment to limit the number of sessions a user can have -->
<session-management invalid-session-url="/index.do">
<concurrency-control max-sessions="1"
error-if-maximum-exceeded="false"/>
</session-management>
</http>
其次,需要在web.xml描述文件中配置中使得o.s.s.web.session.HttpSessionEventPublisher生效,這樣servelt容器將會通知Spring Security session生命週期的事件(通過HttpSessionEventPublisher)。 <listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<listener>
<listener-class>
org.springframework.security.web.session.HttpSessionEventPublisher
</listener-class>
</listener>
然後,藉助於使用session註冊跟蹤(通過session併發控制),實現顯示系統中當前活躍用戶的數量。讓我們在BaseController中添加一個簡單的方法以及bean自動織入。@Autowired
@Autowired
SessionRegistry sessionRegistry;
@ModelAttribute("numUsers")
public int getNumberOfUsers() {
return sessionRegistry.getAllPrincipals().size();
}
可以看到這暴露了一個能夠在Spring MVC JSP頁面中能夠使用的屬性。最後,我們可以添加一個頁腳footer.jsp到JBCP Pets站點中並使用這個屬性。
<body>
<div id="footer">
${numUsers} user(s) are logged in!
</div>
</body>
如果你重新啓動應用並登錄,能夠在每個頁面的底部看到活動用戶的數量。參考資料:《Spring Security3》第六章第三部分翻譯(Session的管理和併發)
http://lengyun3566.iteye.com/blog/1198836