Django自动注销和页面重定向

k3bvogb1  于 2023-08-08  发布在  Go
关注(0)|答案(3)|浏览(186)

我有一个应用程序,它的后端是用django和python写的。我想在我的应用程序中实现自动注销功能。为此,我使用了以下django内置功能:

SESSION_EXPIRE_AT_BROWSER_CLOSE = True
SESSION_COOKIE_AGE = 40
SESSION_SAVE_EVERY_REQUEST = True

字符串
我还使用LOGOUT_REDIRECT_URL在注销后重定向页面。
但这无济于事。

  1. 40秒后,注销发生,但它在前端不可见,登录页面只有当用户刷新标签或在标签中提出任何请求时才会出现。
    1.如果我关闭浏览器并再次打开它,主页显示没有数据,因为数据是用户特定的。并且如果刷新完成或者标签完成,则标签被重定向到登录页面。
    我想实现两个场景:
    1.如果发生自动登录,用户应自动重定向到登录页面。
    1.如果用户关闭浏览器窗口并再次打开,则应向用户显示应用程序的登录页面。
    对于如何实现这些场景,有什么建议吗?
    如果你能帮忙的话,我将不胜感激。- 谢谢-谢谢
oprakyz7

oprakyz71#

  1. 40秒后,注销发生,但它在前端不可见,登录页面只有当用户刷新标签或在标签中提出任何请求时才会出现。
    是的,就是这样。您的浏览器不会自动执行任何操作。您必须编写必要的JavaScript代码来监控会话cookie的年龄。当它过期时,您的JavaScript代码将加载登录页面。
    1.如果我关闭浏览器并再次打开它,主页显示没有数据,因为数据是用户特定的。并且如果刷新完成或者标签完成,则标签被重定向到登录页面。
    听起来不太对劲如果您重新打开浏览器并访问应用程序的主页,它应该会将您带到登录页面。但是,您是否尝试在重新打开浏览器后恢复浏览器的会话(Ctrl + Shift + T)?
wz8daaqr

wz8daaqr2#

自动注销。
在settings.py文件中添加以下两个值:
1.第一个月

Example: SESSION_COOKIE_AGE = 240*60   #//four hours  or your time

字符串

  1. SESSION_SAVE_EVERY_REQUEST = True

############################################################

然后在base.html文件中添加以下jquery代码:

function autorefresh() {

            // auto refresh page after 1 second

            setInterval('refreshPage()', 6*1000);

    }

    function refreshPage() {

            $.ajax({

            url: window.location.pathname,

            success: function(data) {

                window.location = "."

            // $('#console').html(data);

            }

        });

    }

</script>

<script>autorefresh()</script>

<div id="console" ></div>

w51jfk4q

w51jfk4q3#

在static/js文件夹和base.html文件中添加session.js文件:

var time = new Date().getTime();

$(document).on("mousemove keypress scroll touchstart", function(e) {
    time = new Date().getTime();
});

function refresh() {
    if(new Date().getTime() - time >= 300000) //300000 = 5 minutes
        window.location.reload(true);
    else 
        setTimeout(refresh, 10000);
}

setTimeout(refresh, 10000);

if (window.history.replaceState) { 
    window.history.replaceState(null, null, window.location.href);
}

字符串

相关问题