【问题标题】:How to disable cookies in Django manually如何手动禁用 Django 中的 cookie
【发布时间】:2020-10-10 15:31:45
【问题描述】:

我知道 Django 有一些应用程序可以处理 cookie,但我想手动处理。我有一个只有两个 cookie 的 Django 应用程序:csrftokensessionid

我想添加一个 cookie 同意横幅,用户可以在其中阻止所有 cookie。我该怎么做?

【问题讨论】:

标签: python django cookies


【解决方案1】:

从 django 导入 @csrf_extempt

from django.views.decorators.csrf import csrf_exempt

要让视图不使用 csrf 标记,请执行此操作。 (注意:您必须为每个没有 csrf 令牌的视图执行此操作)

@csrf_exempt
def viewGoesHere(request):
    pass

要禁用会话 cookie,您需要更换中间件。 (使cookie起作用的东西)。所以把这段代码作为代码本身放在那里。

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

你需要用'django.contrib.auth.middleware.AuthenticationMiddleware'替换'myapp.middleware.SessionMiddleware'

MIDDLEWARE_CLASSES = (
  'django.middleware.common.CommonMiddleware',
  'myapp.middleware.NewSessionMiddleware', # This is the new middleware
  'django.contrib.auth.middleware.AuthenticationMiddleware',
  'django.middleware.doc.XViewMiddleware',
  'django.contrib.messages.middleware.MessageMiddleware',
  'django.middleware.csrf.CsrfViewMiddleware',
)

【讨论】:

    猜你喜欢
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多