Вход в 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...