如何在用户关闭基于 django2.0 的网站上的选项卡或浏览器时强制注销用户
How to forcefully log out a user when user closes tab or browser on website built on django2.0
我使用 Django 的内置登录注销功能,使用 Django 身份验证,
这是用于登录的以下 url 模式
urls.py:
from django.contrib import admin
from django.urls import path, include
from . import views
urlpatterns = [
path('',views.home),
path('admin/', admin.site.urls),
path('users/', include('users.urls')),
path('users/', include('django.contrib.auth.urls')),
path('dashboard/', include('dashboard.urls')),
]
我在 setting.py 中添加了以下内容
settings.py:
LOGIN_REDIRECT_URL = 'dashboard:home'
LOGOUT_REDIRECT_URL = 'dashboard:home'
现在我如何检查用户是否关闭了他的浏览器并且他应该被注销?
PS:I 制作了我自己的登录和注册 HTML 页面,并制作了我自己的从 AbstractUser 派生的自定义用户
您可以像这样监听 window 或标签页关闭事件。这种方法需要 jQuery 和 JavaScript.
$(document).ready(function(){
$(window).on("beforeunload", function(e) {
$.ajax({
url: logout_url,
method: 'GET',
})
});
});
只需设置 SESSION_EXPIRE_AT_BROWSER_CLOSE
setting to true, so that Django's session cookies are only valid for the length of the browser session.
If SESSION_EXPIRE_AT_BROWSER_CLOSE
is set to True, Django will use browser-length cookies – cookies that expire as soon as the user closes their browser. Use this if you want people to have to log in every time they open a browser.
我使用 Django 的内置登录注销功能,使用 Django 身份验证, 这是用于登录的以下 url 模式 urls.py:
from django.contrib import admin
from django.urls import path, include
from . import views
urlpatterns = [
path('',views.home),
path('admin/', admin.site.urls),
path('users/', include('users.urls')),
path('users/', include('django.contrib.auth.urls')),
path('dashboard/', include('dashboard.urls')),
]
我在 setting.py 中添加了以下内容 settings.py:
LOGIN_REDIRECT_URL = 'dashboard:home'
LOGOUT_REDIRECT_URL = 'dashboard:home'
现在我如何检查用户是否关闭了他的浏览器并且他应该被注销? PS:I 制作了我自己的登录和注册 HTML 页面,并制作了我自己的从 AbstractUser 派生的自定义用户
您可以像这样监听 window 或标签页关闭事件。这种方法需要 jQuery 和 JavaScript.
$(document).ready(function(){
$(window).on("beforeunload", function(e) {
$.ajax({
url: logout_url,
method: 'GET',
})
});
});
只需设置 SESSION_EXPIRE_AT_BROWSER_CLOSE
setting to true, so that Django's session cookies are only valid for the length of the browser session.
If
SESSION_EXPIRE_AT_BROWSER_CLOSE
is set to True, Django will use browser-length cookies – cookies that expire as soon as the user closes their browser. Use this if you want people to have to log in every time they open a browser.