[英]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
在注销后重定向页面。
但这没有帮助。
40 秒后,注销发生但在前端不可见,只有当用户刷新选项卡或在选项卡中提出任何请求时,登录页面才会出现。
如果我关闭浏览器并再次打开它,主页将显示没有数据,因为数据是特定于用户的。 如果选项卡已完成刷新,选项卡将重定向到登录页面。
我想实现两个场景:
如果自动登录发生,用户应该被自动重定向到登录页面。
如果用户关闭浏览器窗口并再次打开它,则应向用户显示应用程序的登录页面。
关于如何实现这些场景的任何建议?
任何帮助,将不胜感激。 谢谢你。
- 40秒后,将注销,但在前端不可见,仅当用户刷新选项卡或在选项卡中发出任何请求时,登录页面才会出现。
是的,就是这样。 您的浏览器不会自动执行任何操作。 您必须编写必要的Javascript代码来监视会话cookie的寿命。 并且当它过期时,您的Javascript代码将加载登录页面。
- 如果我关闭浏览器并再次打开它,则主页将显示无数据,因为这些数据是用户特定的。 如果选项卡的刷新完成,则选项卡将重定向到登录页面。
听起来不对。 如果您重新打开浏览器并访问应用程序的主页,则应该进入登录页面。 但是,您是否要在重新打开浏览器的会话( Ctrl + Shift + T
)后恢复它?
自动注销。
在 settings.py 文件中添加以下两个值:
1. SESSION_COOKIE_AGE = TIME #//change expired session
Example: SESSION_COOKIE_AGE = 240*60 #//four hours or your time
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.