浏览器关闭会话即将过期

时间:2018-07-11 14:30:05

标签: django

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

SESSION_EXPIRE_AT_BROWSER_CLOSE = True

我已经实现了它,但是当我关闭浏览器时,我可以重新打开它,并且用户仍然登录。对此有任何想法吗?

谢谢!

3 个答案:

答案 0 :(得分:0)

某些浏览器(例如chrome)允许用户在重新打开的情况下进行导航,但是您可以尝试使用set_expiry() 参见:https://docs.djangoproject.com/en/2.0/topics/http/sessions/

答案 1 :(得分:0)

首先尝试这样做,因为建议这样做: 将这些配置放入您的settings.py

SESSION_EXPIRE_AT_BROWSER_CLOSE = True
SESSION_COOKIE_AGE = 600 # set just 10000 seconds to test
SESSION_SAVE_EVERY_REQUEST = True

如上所述,您可以使用set_expiry(value) 如果value为0,即request.session.set_expiry(0),则当您关闭浏览器时,您的会话将被注销。 就像我的代码段一样,我试图每5分钟注销一次用户,但您将其设置为0:

views.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')

答案 2 :(得分:0)

转到您的settings.py,然后在文件中添加以下常量

switch intents[INPUT_STRING] {
    case message:
         print("Message type intent detected")
    case weather:
         print("weather type intent detected")
    case music:
         print("music type intent detected")
    case none:
         print("undefined intent detected")
}

您将以闲置状态/空闲状态注销5秒钟。