当前位置: 首页 > 面试题库 >

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

江英卓
2023-03-14
问题内容

几分钟前,我轻松登录了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)

问题答案:

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

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


 类似资料:
  • 我正在使用python的请求模块尝试登录网页。我打开了一个窗口。session(),然后我得到cookie和csrf令牌,它包含在meta标记中。我使用用户名、密码、一个隐藏的输入字段和meta标记中的csrf令牌来构建有效负载。之后,我使用post方法,传递登录url、cookie、负载和头。但在那之后,我无法访问登录页面后面的页面。我做错了什么? 这是我执行登录时的请求标头: 到目前为止,这是

  • cmf_get_current_admin_id() 功能 获取当前登录的管理员ID 参数 无 返回 int 当前登录的管理员ID

  • cmf_get_current_admin_id() 功能 获取当前登录的管理员ID 参数 无 返回 int 当前登录的管理员ID

  • 问题内容: 我想限制对Django通用视图处理的URL的访问。 对于我的观点,我知道login_required装饰器可以完成这项工作。同样,“创建/删除/更新通用视图” login_required也带有该参数,但是我找不到其他通用视图的方法。 问题答案: 对于Django <1.5,你可以通过将函数包装在url中来添加装饰器,从而可以包装通用视图: 基于函数的通用视图在Django 1.4中已

  • 我正在运行Nginx,它被配置为允许我访问另一台服务器上的几个资源,该服务器可用作反向代理。举个例子 到目前为止一切正常。我在Adminer中输入我的DB用户名和密码,问题就开始了。通过检查管理员登录后返回的标题,我注意到它返回了一个 标题。这就是麻烦的根源。在我的浏览器上,这自然会被解释为相对于当前服务器而不是反向代理的含义。我试图破解管理员代码后,找到了一个地方,它有一个位置头,但这只是阻止了

  • 我正在使用Symfony2。0和FOSUserBundle,并希望在我的登录表单上禁用csrf令牌。 我已经禁用了csrf保护全球在我的网站在我的config.yml: 这工作得很好,没有csrf字段添加到我的表单中。但是,这不适用于登录表单。仅在此表单上,如果我没有将令牌包含在表单中,则会出现“无效的CSRF令牌”错误: 如何在登录表单上禁用CSRF令牌?