在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的情况下。