Вход в Django Admin 403 Запрещено (файл cookie CSRF не установлен).

Я пытаюсь войти в админку, но получаю 403 Запрещенную ошибку. На прошлой неделе не было ошибок. Я ничего не менял. Я почти перепробовал все решение тех же проблем в StackOverFlow. Пожалуйста, помогите мне! Спасибо за прочтение. Я прошу прощения за мой плохой английский.

Система:

Ubuntu 16.04
Python 3.5
Django 2.0
Gunicorn
Nginx
iRedMail

django debug.log

    Exception while resolving variable 'is_popup' in template 'admin/login.html'.
Traceback (most recent call last):
  File "/home/xxx/xxx/xxx/lib/python3.5/site-packages/django/template/base.py", line 829, in _resolve_lookup
    current = current[bit]
  File "/home/xxx/xxx/xxx/lib/python3.5/site-packages/django/template/context.py", line 83, in __getitem__
    raise KeyError(key)
KeyError: 'is_popup'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/xxx/xxx/xxx/lib/python3.5/site-packages/django/template/base.py", line 835, in _resolve_lookup
    if isinstance(current, BaseContext) and getattr(type(current), bit):
AttributeError: type object 'RequestContext' has no attribute 'is_popup'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/xxx/xxx/xxx/lib/python3.5/site-packages/django/template/base.py", line 843, in _resolve_lookup
    current = current[int(bit)]
ValueError: invalid literal for int() with base 10: 'is_popup'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/xxx/xxx/xxx/lib/python3.5/site-packages/django/template/base.py", line 850, in _resolve_lookup
    (bit, current))  # missing attribute
django.template.base.VariableDoesNotExist: Failed lookup for key [is_popup] in [{'False': False, 'None': None, 'True': True}, {'base_url': 'domain.com', 'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'SUCCESS': 25, 'WARNING': 30, 'ERROR': 40, 'INFO': 20}, 'perms': <django.contrib.auth.context_processors.PermWrapper object at 0x7f3ea494a128>, 'messages': <django.contrib.messages.storage.fallback.FallbackStorage object at 0x7f3ea4977240>, 'request': <WSGIRequest: GET '/admin/login/?next=/admin/'>, 'user': <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x7f3ea4977278>>, 'csrf_token': <SimpleLazyObject: <function csrf.<locals>._get_val at 0x7f3ea49a2048>>, 'categories': <QuerySet [<Category: ASD>, <Category: ASD>, <Category: ASD>, <Category: ASD>, <Category: ASD>]>}, {}, {'site_url': '/', 'next': '/admin/', 'title': 'Oturum aç', 'view': <django.contrib.auth.views.LoginView object at 0x7f3ea4977320>, 'username': '', 'LANGUAGE_BIDI': False, 'site': <django.contrib.sites.requests.RequestSite object at 0x7f3ea4977630>, 'site_name': 'www.domain.com', 'LANGUAGE_CODE': 'TR', 'form': <AdminAuthenticationForm bound=False, valid=Unknown, fields=(username;password)>, 'available_apps': [], 'site_title': '', 'has_permission': False, 'app_path': '/admin/login/?next=/admin/', 'site_header': ''}]
Forbidden (CSRF cookie not set.): /admin/login/

/etc/nginx/sites-enabled/00-default.conf

#
# Note: This file must be loaded before other virtual host config files,
#
# HTTP
server{
    listen 80;
    server_name www.domain.com;

     location = /favicon.ico { access_log off; log_not_found off; }
     location /static/ {
     root /home/xxx/xxx;
     expires 1M;
     access_log off;
     add_header Cache-Control "public";
}

location /media/ {
     root /home/xxx/xxx;
     expires 1M;
     access_log off;
     add_header Cache-Control "public";
}
location / {
     include proxy_params;
     proxy_pass http://unix:/home/xxx/xxx/domain.sock;
     add_header X-Xss-Protection "1; mode=block" always;
     add_header X-Content-Type-Options nosniff;
     add_header 'Referrer-Policy' 'no-referrer';
     add_header Content-Security-Policy "default-src 'self';";
     add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
}

}
server {
     # Listen on ipv4
     listen 443;

     # Listen on ipv6.
     # Note: this setting listens on both ipv4 and ipv6 with Nginx release
     #       shipped in some Linux/BSD distributions.
     #listen [::]:80;
     server_name https://mail.domain.com;
}

1 ответ

Решение

Решено Изменен файл settings.py, который имел следующую строку:

CSRF_COOKIE_SECURE = False
SESSION_COOKIE_SECURE = False

Я хочу добавить сюда дополнительную информацию... Отключение csrf не рекомендуется в документации...

Надеюсь, это кому-нибудь поможет...

Вы также можете включить в настройки в context_processors следующее: 'django.template.context_processors.csrf',

Эта строка должна автоматически включать токен csrf в шаблоны... поэтому он должен исключить csrf cookie not set fault...

Честно говоря, я установил эту строку в свои настройки, но поскольку я использовал решение в приведенных выше настройках, и оно решило мою проблему "cookie не установлено", я не могу подтвердить 100%, что это помогает с этой ошибкой... Но это еще один способ для борьбы с проблемами с токеном csrf...

Другие вопросы по тегам