一尘不染

django管理员登录突然要求使用csrf令牌

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)

阅读 361

收藏
2020-03-31

共1个答案

一尘不染

管理员登录通常确实需要一个csrf令牌,但是通常所有这些都需要你注意。

  1. 检查浏览器的cookie,以查看是否存在csrf令牌
  2. 尝试清除Cookie并刷新
  3. 检查以确保你具有django.middleware.csrf.CsrfViewMiddleware中间件
  4. 检查你是否开启https或设置中CSRF_COOKIE_SECURE=False(默认设置),否则csrf cookie存在但不会发送。更改后清除饼干CSRF_COOKIE_SECURE
2020-03-31