在Spring MVC中,我可以通過以下代碼獲取所有會話。如果瀏覽器關閉或電源關閉,是否可以使spring mvc會話失效?
int active= sessionRegistry.getAllPrincipals().size();
List<String> activeSessionsId = new ArrayList<String>();
for(int i=0;i<active;i++){
List<SessionInformation> si=
sessionRegistry.getAllSessions(sessionRegistry.getAllPrincipals().get(i), false);
for(SessionInformation s:si){
System.out.println("SessionId="+s.getSessionId());
activeSessionsId.add(s.getSessionId());
}
}
這裏sessionRegistory是我的春天定bean我配置這樣的:
<beans:bean id="sessionRegistry" class="org.springframework.security.core.session.SessionRegistryImpl" />
而且在我的控制器自動裝配這樣的:
@Resource(name="sessionRegistry")
private SessionRegistryImpl sessionRegistry;
我想activeSessionsId名單將只包含活動會話,但它包含我登錄並由spring安全傳遞的所有用戶會話。對於某些用戶,我關閉了瀏覽器而無需註銷,並且我預計此會話將不會添加到我的activeSessionsId 列表中,但它不是那樣的。
我觀察到所有sessionId都添加在activeSessionsId中。
其實明智的我知道會話創建是由服務器端發生的。但請任何人讓我知道無論我嘗試的是否有可能在春季MVC的情況下。