gpt4 book ai didi

python - 如何在 Django 中跟踪用户 session 的长度

转载 作者:太空宇宙 更新时间:2023-11-04 01:09:49 27 4
gpt4 key购买 nike

有没有一种方法可以跟踪 session 在 Django 中存在的时间长度?

有没有办法让 Django 在 session 过期时运行一个函数?这将使我能够做到这一点。

谢谢!

最佳答案

正如@TimmyO'Mahony 所提到的,您可以使用 user_logged_out 由于注销而处理 session 结束的信号。

您可以使用中间件来处理由于不活动而导致的 session 过期。中间件看起来像:

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

假设以上代码在文件sessions/middleware.py 中,您需要将此中间件添加到 MIDDLEWARE_CLASSES在你的settings.py喜欢:

MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'sessions.middleware.HandleSessionExpiryMiddleware',
...
)

希望这对您有所帮助!

关于python - 如何在 Django 中跟踪用户 session 的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28373437/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com