use*_*479 6 browser session spring-security
我正在使用Spring Security 3.1并且正在使用
<concurrency-control max-sessions="1" error-if-maximum-exceeded="true" />
Run Code Online (Sandbox Code Playgroud)
有没有办法在浏览器关闭时强制关闭会话?我需要将max-sessions保持为1以进行并发控制.
谢谢!
我会在“CONCURRENT_SESSION_FILTER”之前添加一个自己的自定义过滤器,并检查请求 URI 中是否有“force-logout.do”(或类似的字符串)之类的字符串。
然后,在生成的 HTML 中,我将有一个如下所示的 JavaScript 事件处理程序:
<script type="text/javascript">
function force_logout() {
// AJAX request to server notifying that the browser has been closed.
}
</script>
<body onbeforeunload="force_logout();">
</body>
Run Code Online (Sandbox Code Playgroud)
这适用于 IE 和 Firefox(您也应该检查其他浏览器)。您的过滤器只需要检查 URI 并执行操作,session.invalidate()以防它与“强制注销 URI”匹配,然后立即返回,否则就绕过对过滤器链的请求。
注意:我没有添加 AJAX 代码,因为我不知道您是否使用特定的 AJAX 框架。使用prototype.js,这将相当简单。
| 归档时间: |
|
| 查看次数: |
7302 次 |
| 最近记录: |