当用户关闭基于django2.0构建的网站上的选项卡或浏览器时,如何强制注销用户

时间:2018-06-28 15:10:37

标签: django authentication django-authentication

我通过Django身份验证使用了Django内置的登录注销功能, 这是用于登录的以下网址格式 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:我做了自己的登录和注册HTML页面,并做了我自己的来自AbstractUser的customuser

2 个答案:

答案 0 :(得分:1)

您可以像这样监听窗口或标签关闭事件。这种方法需要jQuery和JavaScript。

$(document).ready(function(){         
    $(window).on("beforeunload", function(e) {
        $.ajax({
                url: logout_url,
                method: 'GET',
            })
    });
});

答案 1 :(得分:1)

只需将SESSION_EXPIRE_AT_BROWSER_CLOSE设置为true,以便Django的会话cookie仅对length of the browser session有效。

  

如果SESSION_EXPIRE_AT_BROWSER_CLOSE设置为True,则Django将使用浏览器长度的cookie,这些cookie会在用户关闭浏览器后立即失效。如果您希望人们每次打开浏览器都必须登录,请使用此选项。