在设置:
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
注意:未经测试,我为我的应用程序编写了一个类似的中间件,我已经对其进行了更改以符合您的要求。