use*_*692 3 python django session django-sessions
有没有办法可以跟踪会话在 Django 中存在的时间长度?
有没有办法让 Django 在会话到期时运行一个函数?这将允许我这样做。
谢谢!
正如@TimmyO'Mahony 所提到的,user_logged_out由于注销,您可以使用信号来处理会话结束。
由于不活动,您可以使用中间件来处理会话到期。中间件看起来像:
import time
from django.contrib.auth import logout
SESSION_TIMEOUT = 5400 # 90 minutes
class HandleSessionExpiryMiddleware(object):
def process_request(self, request):
last_activity = request.session.get('last_activity')
now = time.time()
idle = now - last_activity if last_activity else 0
timeout = SESSION_TIMEOUT
if idle > timeout:
run_on_expiry()
logout(session)
else:
request.session['last_activity'] = now
idle = 0
def run_on_expiry(self):
# Custom code
Run Code Online (Sandbox Code Playgroud)
假设上面的代码在一个文件中sessions/middleware.py,你需要这个中间件添加到MIDDLEWARE_CLASSES您的settings.py喜欢:
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'sessions.middleware.HandleSessionExpiryMiddleware',
...
)
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
1976 次 |
| 最近记录: |