spring security3 統計在線用戶

首先,我們需要使得ConcurrentSessionFilter生效並在spring-security.xml配置。
	<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.jspJBCP Pets站點中並使用這個屬性。
	<body>
		<div id="footer">
			${numUsers} user(s) are logged in!
		</div>
	</body>
如果你重新啓動應用並登錄,能夠在每個頁面的底部看到活動用戶的數量。
參考資料:《Spring Security3》第六章第三部分翻譯(Session的管理和併發)
                http://lengyun3566.iteye.com/blog/1198836
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章