django admin登录突然要求csrf令牌

cod*_*321 17 django

几分钟前我很容易登录我的django管理控制台.我必须在以超级用户身份登录时导致此错误的某些地方进行了更改:

禁止(403)CSRF验证失败.请求中止.

这个错误让我措手不及,因为我整晚都在登录.为什么我突然需要一个用于管理员登录的csrf令牌?你会认为签到表格已经有了.这是我的admin.py:

from django.contrib import admin
from accounts.models import Image, Category, UserProfile

class ImageAdmin(admin.ModelAdmin):
    list_display    = ["__unicode__", "title", "created"]

admin.site.register(Image, GenericImageAdmin)

class CategoryAdmin(admin.ModelAdmin):
    list_display    = ["category"]

admin.site.register(Category, CategoryAdmin)

admin.site.register(UserProfile)
Run Code Online (Sandbox Code Playgroud)

Zee*_*dia 95

对于升级到 Django +4.0 后遇到此问题的新用户,您需要CSRF_TRUSTED_ORIGINS=['https://*.YOUR_DOMAIN.COM']添加settings.py

感谢以下答案:

/sf/answers/4922849851/


uba*_*dub 17

管理员登录通常需要一个csrf令牌,但通常都会照顾你.

  1. 检查浏览器的cookie以查看是否存在csrf令牌
  2. 尝试清除cookie并刷新
  3. 检查以确保您django.middleware.csrf.CsrfViewMiddleware的中间件
  4. 在设置中检查您https是否已启用或(您CSRF_COOKIE_SECURE=False是默认设置),否则您的csrf cookie存在但不会被发送.更换后清除您的cookie CSRF_COOKIE_SECURE.

  • @ubadub在你的列表中添加了另一个原因,希望你不介意(`CSRF_COOKIE_SECURE = False`). (3认同)

jow*_*ian 5

当我没有在 settings_local 中设置 CSRF_COOKIE_DOMAIN 但它是在我的主 settings.py 中设置时,就会出现此错误。

就我而言,我将其设置为本地主机,例如

CSRF_COOKIE_DOMAIN = '127.0.0.1'
Run Code Online (Sandbox Code Playgroud)