从文档中我可以看到如何创建自己的django auth后端。虽然考虑到会话并且用户详细信息在3个表(auth_user,Session以及存储您的其他authorzsation令牌时的自定义表)中分开,但它可能会略微混乱。
我知道您可以在视图中设置会话超时。但是,我想知道在您的自定义身份验证后端中创建新会话的同时,是否还有另一种(或什么是最好的)方法来设置django会话超时。
基本上我的其他身份验证系统的总超时为24小时,空闲时间为1小时,因此我希望将这些超时与django会话尽可能接近。
希望这是有道理的。
由于
答案 0 :(得分:1)
在设置:
SESSION_EXPIRE_AT_BROWSER_CLOSE = False
此中间件将检查最大24小时+ 1小时空闲:
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,我已将其更改为符合您的要求。