gpt4 book ai didi

grails - Grails Spring Security- session 超时时自动重定向

转载 作者:行者123 更新时间:2023-12-02 15:25:29 24 4
gpt4 key购买 nike

使用grails和spring安全性,我想在 session 超时后自动显示登录页面。

现在,当 session 超时时,它保留在我留给它的页面上。单击任何链接后,我将返回登录页面。我希望用户自动重定向到登录页面。

实现此目标的最佳方法是什么。

最佳答案

这取决于您的应用程序以及用户与页面的交互方式。

例如,如果您的页面是静态页面,并且不执行任何AJAX或Websockets,则很可能只需设置setTimeout()(documentation)函数即可在X分钟(X是您的 session 超时)后重定向。计时器将在页面加载时启动。您甚至可以将其包括在布局中。

// assumes you are using the default login controller and action
window.setTimeout(function() {
// this should poll the server and check to see if the session is valid
// if not then it should issue the redirect (below)
window.location.href='${createLink(controller: "login", action: "login")}'
}, (20*60*1000)); // 20 minutes

但是,如果您的应用程序使用AJAX或Websocket,则将变得更加复杂,因为用户可以停留在单个页面上并与之交互,并且每次交互都将重置 session (服务器端)的超时。这将需要您在每次执行操作时在客户端(它们所在的页面)上重置计时器。在 $.ajaxStart中执行此操作可能会起作用( documentation)。
var sessionTimeout = ... // leaving this implementation out as it's described above.
$(document).ajaxStart(function() {
// in your click function, call clearTimeout
window.clearTimeout(sessionTimeout);

// then call setTimeout again to reset the timer
sessionTimeout = window.setTimeout(...);
});

Websocket是完全不同的野兽,但是只有在数据到达时,才会采用与上述相同的概念。

在不了解有关您的应用程序的更多详细信息的情况下,很难说出哪个是正确的选择,但是这些基本上就是您的选择,这些示例将使您走上正确的道路。

关于grails - Grails Spring Security- session 超时时自动重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28420632/

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