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