Django 创建注销后不会销毁的会话
Django create session which does not destroy after logout
在我的 django 项目中,我想要一个只在特定时间后销毁的会话,为此我设置了过期时间,但会话也在注销后销毁。
基本上我想要的会话 不受任何 login/logout activity 影响。
我搜索了一下,没有找到任何解决方案,任何人都可以帮助我。
好吧,当您调用 logout
时,它 flushes 会话。如果您想保留该数据,则需要定义自己的注销功能。你可以这样试试:
from django.contrib.auth import logout
def logout(request):
your_data = request.session.get('your_key', None)
current_expiry = request.session.get('_session_expiry')
logout(request)
if your_data:
request.session['your_key'] = your_data
if current_expiry:
request.session['_session_expiry'] = current_expiry
仅供参考 这是一个未经测试的代码。此外,如果您不使用会话来存储注销后应持续存在的数据,可能会更好。您可以为此使用 Redis 或任何临时存储。
试试这个:
Views.py
from django.contrib.auth import logout
def logoutUser(request):
logout(request)
messages.success(request,"Successfully logged out")
return redirect("login")
在我的 django 项目中,我想要一个只在特定时间后销毁的会话,为此我设置了过期时间,但会话也在注销后销毁。
基本上我想要的会话 不受任何 login/logout activity 影响。
我搜索了一下,没有找到任何解决方案,任何人都可以帮助我。
好吧,当您调用 logout
时,它 flushes 会话。如果您想保留该数据,则需要定义自己的注销功能。你可以这样试试:
from django.contrib.auth import logout
def logout(request):
your_data = request.session.get('your_key', None)
current_expiry = request.session.get('_session_expiry')
logout(request)
if your_data:
request.session['your_key'] = your_data
if current_expiry:
request.session['_session_expiry'] = current_expiry
仅供参考 这是一个未经测试的代码。此外,如果您不使用会话来存储注销后应持续存在的数据,可能会更好。您可以为此使用 Redis 或任何临时存储。
试试这个:
Views.py
from django.contrib.auth import logout
def logoutUser(request):
logout(request)
messages.success(request,"Successfully logged out")
return redirect("login")