設定時:
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
注意: テストしていません。アプリ用に同様のミドルウェアを作成し、要件に合わせて変更しました。