Django 正在浏览器关闭时终止会话

Django 正在浏览器关闭时终止会话,django,Django,我了解到,您可以将以下代码行放入settings.py中,以便在浏览器关闭时终止用户的会话: SESSION_EXPIRE_AT_BROWSER_CLOSE = True 我已经实现了这一点,但是当我关闭浏览器时,我可以重新打开它,用户仍然登录。有什么想法吗 谢谢 一些浏览器(如chrome)允许用户在重新打开时导航,但您可以尝试使用set_expiry() 请参阅:首先尝试以下建议: 将这些配置放入您的设置.py: SESSION_EXPIRE_AT_BROWSER_CLOSE = True

我了解到,您可以将以下代码行放入settings.py中,以便在浏览器关闭时终止用户的会话:

SESSION_EXPIRE_AT_BROWSER_CLOSE = True
我已经实现了这一点,但是当我关闭浏览器时,我可以重新打开它,用户仍然登录。有什么想法吗


谢谢

一些浏览器(如chrome)允许用户在重新打开时导航,但您可以尝试使用set_expiry()
请参阅:

首先尝试以下建议: 将这些配置放入您的
设置.py

SESSION_EXPIRE_AT_BROWSER_CLOSE = True
SESSION_COOKIE_AGE = 600 # set just 10000 seconds to test
SESSION_SAVE_EVERY_REQUEST = True
如上所述,您可以使用
set\u expiration(value)
为0时,即
请求.session.set_expiry(0)
则关闭浏览器时,您的会话将注销。 与我的代码片段一样,我尝试每5分钟注销一次用户,但您将其设置为0:

视图.py

def login_user(request):
if request.method == "POST":
    username = request.POST['username']
    password = request.POST['password']
    user = authenticate(username=username, password=password)
    if user is not None:
        if user.is_active:
            request.session.set_expiry(300)
            login(request, user)

            messages.success(request, 'Your password was successfully updated!')                
            return redirect('blazon:index')
            # return render(request, 'blazon/index.html', {'projects': projects})
        else:
            return render(request, 'blazon/login.html', {'error_message': 'Your account has been disabled'})
    else:
        return render(request, 'blazon/login.html', {'error_message': 'Invalid login'})
return render(request, 'blazon/login.html')

转到your settings.py并在文件中添加以下常量

SESSION_EXPIRE_AT_BROWSER_CLOSE = True
SESSION_COOKIE_AGE = 5 # 5 seconds for testing
SESSION_SAVE_EVERY_REQUEST = True

您将在非活动/空闲状态下注销5秒钟。

-您也可以尝试使用浏览器关闭事件。谢谢。出于好奇,我将set_expiry()参数放在哪里或什么文件?请尝试验证凭据的位置第二种解决方案是:在settings.pyValidating凭据中使用SESSION_COOKIE_AGE和SESSION_SAVE_每个请求?你是说我的登录视图?这不适用于Chrome,因为即使浏览器关闭,Chrome也会在后台运行,但这是一个很好的开始。非常感谢!