【问题标题】:Django custom backend Session TimeoutDjango 自定义后端会话超时
【发布时间】:2013-06-16 09:08:13
【问题描述】:

从文档中我可以看到如何创建自己的 django 身份验证后端。尽管考虑到会话和用户详细信息跨 3 个表(auth_user、Session 以及存储其他授权令牌时的自定义表),这可能会有点令人困惑。

我知道您可以在视图中设置会话超时。但是我想知道在自定义身份验证后端创建新会话的同时是否还有另一种(或最好的)方法来设置 django 会话超时。

基本上我的其他身份验证系统的总超时时间为 24 小时,空闲时间为 1 小时,因此我想将这些超时时间与 django 会话尽可能接近。

希望这是有道理的。

谢谢

【问题讨论】:

    标签: django


    【解决方案1】:

    在设置中:

    SESSION_EXPIRE_AT_BROWSER_CLOSE = False
    

    此中间件将检查最长 24h + 1h 空闲:

    class timeOutMiddleware(object):
    
        def process_request(self, request):
            shouldLogout = False
            if request.user.is_authenticated():
                if 'beginSession' in request.session:            
                    elapsedTime = datetime.datetime.now() - \
                                  request.session['beginSession']
                    if elapsedTime.seconds > 24*3600:
                        del request.session['beginSession'] 
                        shouldLogout = True
                else:
                    request.session['beginSession'] = datetime.datetime.now()
    
                if 'lastRequest' in request.session:            
                    elapsedTime = datetime.datetime.now() - \
                                  request.session['lastRequest']
                    if elapsedTime.seconds > 60*60:
                        del request.session['lastRequest'] 
                        shouldLogout = True
    
                request.session['lastRequest'] = datetime.datetime.now()
    
                if shouldLogout:
                    logout(request)
    
            else:
                if 'beginSession' in request.session:
                    del request.session['beginSession']
                if 'lastRequest' in request.session:
                    del request.session['lastRequest']
    
            return None
    

    注意:未经测试,我为我的应用写了一个similar middleware,我已对其进行了更改以满足您的要求。

    【讨论】:

    猜你喜欢
    • 2015-07-20
    • 2017-04-14
    • 2014-06-21
    • 2012-10-25
    • 2013-05-05
    • 2017-03-05
    • 1970-01-01
    • 2012-12-07
    • 2012-08-16
    相关资源
    最近更新 更多