Как принудительно выйти из системы, когда пользователь закрывает вкладку или браузер на сайте, построенном на django2.0 - PullRequest
0 голосов
/ 28 июня 2018

Я использовал встроенную функцию выхода из системы 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: я создал свой собственный HTML-страницы для входа и регистрации и создал свой собственный customuser на основе AbstractUser

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Просто установите для параметра SESSION_EXPIRE_AT_BROWSER_CLOSE значение true, чтобы файлы cookie сеанса Django действовали только в течение продолжительности сеанса браузера .

Если для SESSION_EXPIRE_AT_BROWSER_CLOSE установлено значение True, Django будет использовать файлы cookie длины браузера - файлы cookie, срок действия которых истекает, как только пользователь закрывает свой браузер. Используйте это, если вы хотите, чтобы люди входили в систему каждый раз, когда открывали браузер.

0 голосов
/ 28 июня 2018

Вы можете прослушать событие закрытия окна или вкладки, как это. Этот подход требует jQuery и JavaScript.

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