繁体   English   中英

Django 自动注销和页面重定向

[英]Django auto logout and page redirection

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

SESSION_EXPIRE_AT_BROWSER_CLOSE = True
SESSION_COOKIE_AGE = 40
SESSION_SAVE_EVERY_REQUEST = True

我还使用LOGOUT_REDIRECT_URL在注销后重定向页面。

但这没有帮助。

  1. 40 秒后,注销发生但在前端不可见,只有当用户刷新选项卡或在选项卡中提出任何请求时,登录页面才会出现。

  2. 如果我关闭浏览器并再次打开它,主页将显示没有数据,因为数据是特定于用户的。 如果选项卡已完成刷新,选项卡将重定向到登录页面。

我想实现两个场景:

  1. 如果自动登录发生,用户应该被自动重定向到登录页面。

  2. 如果用户关闭浏览器窗口并再次打开它,则应向用户显示应用程序的登录页面。

关于如何实现这些场景的任何建议?

任何帮助,将不胜感激。 谢谢你。

  1. 40秒后,将注销,但在前端不可见,仅当用户刷新选项卡或在选项卡中发出任何请求时,登录页面才会出现。

是的,就是这样。 您的浏览器不会自动执行任何操作。 您必须编写必要的Javascript代码来监视会话cookie的寿命。 并且当它过期时,您的Javascript代码将加载登录页面。

  1. 如果我关闭浏览器并再次打开它,则主页将显示无数据,因为这些数据是用户特定的。 如果选项卡的刷新完成,则选项卡将重定向到登录页面。

听起来不对。 如果您重新打开浏览器并访问应用程序的主页,则应该进入登录页面。 但是,您是否要在重新打开浏览器的会话( Ctrl + Shift + T )后恢复它?

自动注销。

在 settings.py 文件中添加以下两个值:

1. SESSION_COOKIE_AGE = TIME #//change expired session

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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM