gpt4 book ai didi

java - session 过期后自动注销

转载 作者:搜寻专家 更新时间:2023-10-31 08:24:42 25 4
gpt4 key购买 nike

我们的应用程序在 30 分钟后注销并重定向到登录页面,我在 web.xml 中指定 session 超时并使用 requestProcessor 进行重定向。我想向用户显示一条消息,说明您的 session 在 session 后已过期到期了,我该怎么做。自动注销?我想在页面提示错误信息“ session 超时,请重新登录”。那我怎么能检测到 session 超时呢?会自动触发任何方法吗?

最佳答案

创建一个 Activity 检查器,它每分钟检查一次是否发生了任何用户 Activity (鼠标单击、按键),并向服务器端执行心跳以在用户 Activity 时保持 session Activity ,而在用户不活动时不执行任何操作.当 30 分钟没有 Activity 时(或服务器端设置的任何默认 session 超时),然后执行重定向。

这是一个在 jQuery 帮助不大的启动示例绑定(bind)点击和按键事件并触发 ajax 请求。

<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
$(document).ready(function() {
$.active = false;
$('body').bind('click keypress', function() { $.active = true; });
checkActivity(1800000, 60000, 0); // timeout = 30 minutes, interval = 1 minute.
});

function checkActivity(timeout, interval, elapsed) {
if ($.active) {
elapsed = 0;
$.active = false;
$.get('heartbeat');
}
if (elapsed < timeout) {
elapsed += interval;
setTimeout(function() {
checkActivity(timeout, interval, elapsed);
}, interval);
} else {
window.location = 'http://example.com/expired'; // Redirect to "session expired" page.
}
}
</script>

创建一个 Servlet 来监听 /heartbeat 并且基本上只做以下事情:

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
request.getSession();
}

保持 session 活跃。

当您将登录用户存储在 session 中时,只要 session 过期,它就会“自动”注销。因此您无需手动注销用户。

关于java - session 过期后自动注销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3201991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com