【问题标题】:How to forcefully log out a user when user closes tab or browser on website built on django2.0当用户关闭基于 django2.0 的网站上的选项卡或浏览器时如何强制注销用户
【发布时间】:2018-06-28 15:10:37
【问题描述】:

我使用 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 中添加了以下内容 设置.py:

LOGIN_REDIRECT_URL = 'dashboard:home'
LOGOUT_REDIRECT_URL = 'dashboard:home'

现在我如何检查用户是否关闭了他的浏览器并且他应该退出? PS:我制作了自己的登录和注册 HTML 页面,并制作了自己的自定义用户,从 AbstractUser 派生

【问题讨论】:

    标签: django authentication django-authentication


    【解决方案1】:

    只需将SESSION_EXPIRE_AT_BROWSER_CLOSE 设置为true,这样Django 的会话cookie 就只对length of the browser session 有效。

    如果 SESSION_EXPIRE_AT_BROWSER_CLOSE 设置为 True,Django 将使用浏览器长度的 cookie——一旦用户关闭浏览器,cookie 就会过期。如果您希望人们每次打开浏览器时都必须登录,请使用此选项。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 在哪里添加此代码?我以前从未见过这样的代码。我在哪里可以了解更多信息?
      • 好的,这需要在每个 html 页面上。通常我们有 base.html 并且每个页面都是从 base.html 页面扩展而来的。所以把它放在一个地方就可以了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-08
      • 2014-07-01
      • 2014-10-12
      • 1970-01-01
      • 2017-12-08
      • 1970-01-01
      • 2012-08-19
      相关资源
      最近更新 更多