我希望能够以编程方式注销所有登录的用户。如何强制在某些事件上注销所有用户?如何在spring-security中注销所有登录的用户?
回答
首先定义HttpSessionEventPublisher在web.xml
<listener>
<listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
</listener>
然后在你的春天security.xml文件中定义<session-management>
。
现在,在您的控制器方法中使用SessionRegistry
来使所有会话失效。以下代码检索所有活动会话。
List<SessionInformation> activeSessions = new ArrayList<SessionInformation>();
for (Object principal : sessionRegistry.getAllPrincipals()) {
for (SessionInformation session : sessionRegistry.getAllSessions(principal, false)) {
activeSessions.add(session);
}
}
在每个活动的会话,你可以调用expireNow()
法到期或使它们无效。
@Maksym Demidas我怎样才能得到** Session ** ** SessionInformation **? – gstackoverflow
Answer描述了如何仅获取有关活动会话的信息,但没有描述如何使它们失效。 – gstackoverflow
@gstackoverflow在Servlet API中没有办法通过SessionInformation获取会话(并且有一个很好的理由 - 这不是安全的操作)。如果你真的需要它,你可以尝试手动做一个解决方法([这样的事情])(http://stackoverflow.com/questions/3092363/how-can-i-load-java-httpsession-from-jsessionid/3092495# 3092495)) –
Ketan为您提供了您正在寻找的答案,如果您更改了第二个块并使用session.expireNow();
而不是activeSessions.add(session);
,则最终所有活动会话都会过期。
在哪里可以找到会话? – gstackoverflow
如果您仔细阅读了Ketan的示例代码,您会发现'session'是从'sessionRegistry.getAllSessions'方法获得的。 – malaguna
请注意,并仔细查看退货类型 – gstackoverflow
- 1. 如何注销登录我的网站的所有用户-php
- 2. Rails.cache.clear正在注销所有登录用户(清除会话)
- 3. 注销所有仍然登录的用户的WebApp
- 4. 如何跟踪用户在mvc中的登录/注销
- 5. 如何调用CAS中的用户登录和注销功能
- 6. 如何注销所有用户?
- 7. 在EntLib中登录/注销
- 8. Powershell - 注销所有用户?
- 9. 如果在一个页面上登录,从所有页面注销用户mvc
- 10. 如何在用户使用Zend_Navigation登录后交换登录以进行注销?
- 11. 404注销与SpringMVC和SpringSecurity
- 12. 显示用户名登录注销ASP
- 13. Grails注销另一个登录用户
- 14. Rails:注销事件登录用户
- 15. 单元测试用户登录/注销
- 16. 如何在git中注销2个用户(其中两个用户已登录)
- 17. 注销wordpress中的所有用户
- 18. 如何在mvc注销后获取用户登录ID
- 19. Google+登录:如何注销 - 使用(gapi.auth.signOut)
- 20. 如何使用Hybridauth 3登录/注销?
- 21. 如何使用SWRevealViewController登录注销
- 22. 如何在登录后注销
- 23. 如何让登录 - 注销swithces在PHP
- 24. 如何在asp.net登录页面注销
- 25. 如果用户登录,在Zend2中显示隐藏登录/注销
- 26. 如何在弹簧安全性中注销用户后登录用户ID?
- 27. 如何清除用户在ASP.NET中注销时的所有历史记录?
- 28. 登录变更注销在登录时
- 29. 如何为所有用户的登录
- 30. 如何在用户从站点注销后在用户登录界面重定向用户(登录屏幕)
答案描述了如何获取有关活动会话的信息,但没有描述如何使它们失效。 – gstackoverflow
@gstackoverflow - 回答说在活动会话中调用'expireNow()'以导致注销。你在找别的东西吗? –
@Neil Smithline回答沉默关于如何得到这个会议。因此答案是不完整的,因此不被作者接受 – gstackoverflow