Как отключить файлы cookie в Django вручную - PullRequest
2 голосов
/ 20 июня 2020

Я знаю, что для Django существуют приложения для обработки файлов cookie, но я хочу сделать это вручную. У меня есть приложение Django только с двумя файлами cookie: csrftoken и sessionid.

Я хочу добавить баннер согласия ie, где пользователь может заблокировать все файлы cookie. Как я могу это сделать?

1 Ответ

0 голосов
/ 20 июня 2020

импорт @csrf_extempt из django.

from django.views.decorators.csrf import csrf_exempt

Чтобы представление не использовало токены csrf, сделайте это. (Примечание: вы должны сделать это для каждого представления, которое не будет иметь токенов csrf)

@csrf_exempt
def viewGoesHere(request):
    pass

И чтобы отключить файлы 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

И вам нужно заменить 'myapp.middleware.SessionMiddleware' на 'django.contrib.auth.middleware.AuthenticationMiddleware'

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',
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...