gpt4 book ai didi

django - 禁用Django的匿名用户cookie

转载 作者:行者123 更新时间:2023-12-04 10:00:46 26 4
gpt4 key购买 nike

我将django auth用于我的网站,该网站需要安装 session 中间件。

Django session 中间件始终会添加 session cookie,即使对于匿名用户(未经身份验证的用户)也是如此。当他们进行身份验证时,该cookie将替换为另一个cookie,指示用户已登录。

我想出于缓存目的(清漆)禁用匿名用户cookie。

有没有一种方法可以禁用匿名用户cookie,而又不删除使用auth的应用所必需的 session 中间件?

最佳答案

session 数据在process_responseSessionMiddleware中的cookie中设置。此函数不使用任何设置或request.user,因此您无法在此方法内部了解用户是登录用户还是匿名用户。因此,您不能禁用将 session cookie发送到浏览器。

但是,如果需要此功能,则可以继承SessionMiddleware并覆盖process_response

from django.contrib.sessions.middleware import SessionMiddleware
from django.conf import settings

class NewSessionMiddleware(SessionMiddleware):

def process_response(self, request, response):
response = super(NewSessionMiddleware, self).process_response(request, response)
#You have access to request.user in this method
if not request.user.is_authenticated():
del response.cookies[settings.SESSION_COOKIE_NAME]
return response

您可以使用 NewSessionMiddleware代替 SessionMiddleware
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'myapp.middleware.NewSessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.middleware.doc.XViewMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
)

关于django - 禁用Django的匿名用户cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16069753/

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