Django(使用 TokenAuthentication):“non_field_errors”:“无法使用提供的凭据登录?

2023-12-15

我正在使用 httpie 来测试我的自定义身份验证。

http POST http://127.0.0.1:8000/api-token-auth/ username='username1' password='Password123'

我确实使用创建了一个自定义身份验证对象AbstractUser.

使用 TokenAuthentication,我按照文档操作并在我的REST_FRAMEWORK设置:

REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
    'regis.models.CustomAuthentication',
    )
}

并添加了rest_framework.authtoken在我安装的应用程序中。

My AUTHENTICATION_BACKEND如下:

AUTHENTICATION_BACKENDS = [ 'regis.models.CustomAuthentication' ]

这是我的自定义身份验证类:

class CustomAuthentication(authentication.TokenAuthentication):
    def authenticate(self, request):
        username = request.META.get('X_USERNAME')
        print(username)
        user_model = get_user_model()
        if not username:
            return None
    try:
        user = user_model.objects.get(username=username)
    except User.DoesNotExist:
        raise exceptions.AuthenticationFailed('No such user')
    return (user, None)

urls.py:

urlpatterns += [
    url(r'^api-token-auth/', views.obtain_auth_token),

    ]

我非常关注 DRF 文档(http://www.django-rest-framework.org/api-guide/authentication/#custom-authentication)。如果需要任何其他信息来解决此问题,请告诉我,我会更新。对我所缺少的任何帮助都会很棒。

添加:出于好奇,如果我有自定义用户,我是否需要制作自定义身份验证系统?

UPDATE:

我刚刚删除了上面的类,并添加了rest_framework.authentication.TokenAuthentication在我的 REST_FRAMEWORK 设置中。我仍在使用自定义身份验证来获取我的用户。

它看起来像这样(不打算格式化它。从 VIM 格式化代码太糟糕了):

class CustomAuthentication(object):
def authenticate(self, email=None, password=None):

    User = get_user_model()
    try:
        user = User.objects.get(email=email)
    except User.DoesNotExist:
        return None
    if user.check_password(password):
        return user

    return None

def get_user(self, user_id):
    try:
        user_model = get_user_model()
        user = user_model.objects.get(pk=user_id)
    except User.DoesNotExist:
        return None

我使用这个 Django 文档来创建该代码:https://docs.djangoproject.com/en/1.10/topics/auth/customizing/


如果您在 DRF 代码中搜索错误字符串,您会发现这个(在authtoken/serializers.py:

from django.contrib.auth import authenticate
...

if username and password:                                                                                                                                                                                                              
    user = authenticate(username=username, password=password)                                                                                                                                                                          

    if user:                                                                                                                                                                                                                           
        # From Django 1.10 onwards the `authenticate` call simply                                                                                                                                                                      
        # returns `None` for is_active=False users.                                                                                                                                                                                    
        # (Assuming the default `ModelBackend` authentication backend.)                                                                                                                                                                
        if not user.is_active:                                                                                                                                                                                                         
            msg = _('User account is disabled.')                                                                                                                                                                                       
            raise serializers.ValidationError(msg, code='authorization')
    else:                                                                                                                                                                                                                     
        msg = _('Unable to log in with provided credentials.')                                                                                                                                                                         
        raise serializers.ValidationError(msg, code='authorization')
...

所以看起来取决于您使用的 Django 版本,这些凭据不正确,或者用户不活跃(对于 Django >= 1.10)?

您是否尝试过使用这些凭据手动登录管理员来验证它们?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django(使用 TokenAuthentication):“non_field_errors”:“无法使用提供的凭据登录? 的相关文章

  • 在 Bootstrap 中使单击的选项卡处于活动状态

    我正在使用 Django 并将 Bootstrap 与 Django 集成 这是我的导航栏 HTML 代码 div class navbar navbar default navbar fixed top div class contain
  • 如何在 Django 中使我的模型字段可选?

    我正在尝试遵循底部的完整示例 https docs djangoproject com en dev topics auth customizing https docs djangoproject com en dev topics au
  • Django 选择性转储数据

    是否可以有选择地过滤哪些记录Django的dumpdata管理命令输出 我有几个模型 每个模型都有数百万行 我只想转储一个模型中符合特定条件的记录 以及引用任何这些记录的所有外键链接记录 考虑这个用例 假设我有一个生产数据库 其中我的用户模
  • Django REST Framework ManyToMany 过滤多个值

    我有两个模型 一个定义用户 另一个定义这些用户的标签 我正在使用 Django REST Framework 创建 API 我希望能够查询至少包含标签 id 1 和 2 的用户 例如 如果用户的标签是 1 2 1 2 3 2 3 1 3 我
  • 在 Django 模板中使用 forloop.counter 值作为列表索引

    在我的 Django 1 1 1 应用程序中 我在视图中有一个函数 它向模板返回一系列数字和项目列表列表 例如 data item1 item2 item3 item4 item5 item6 item7 item8 item9 retur
  • Heroku 上的 Django 翻译无法完全正常工作

    我在 Heroku 上部署了 Django 应用程序 并添加了https github com piotras heroku buildpack gettext git此 ugettext 构建包和应用程序的某些部分已注释翻译 本地可以用
  • 如何使用Python在Django for Windows中激活虚拟环境?

    我被告知要在 Django for Windows 中激活虚拟环境 我应该尝试 environment path Scripts activate 但是当我输入该命令时 cmd 返回此错误 该系统找不到指定的路径 我通过输入以下命令创建了虚
  • 带有用户信息的 Django Logger

    我只是好奇 是否可以放User内的信息formatters信息输入LOGGING配置在setting py 现在我只是将该信息放入要记录的消息中 但也许有一种方法可以将其设置为formatters争论 这是我的LOGGING现在的配置 LO
  • Django-tables2 列总计

    我正在尝试使用此总结列中的所有值文档 https github com bradleyayers django tables2 blob master docs pages column headers and footers rst 但页
  • 在 JavaScript 函数的 Django 模板中转义字符串参数

    我有一个 JavaScript 函数 它返回一组对象 return Func id name 例如 我在传递包含引号的字符串时遇到问题 Dr Seuss ABC BOOk 是无效语法 I tried name safe 但无济于事 有什么解
  • django-autocompletion-light 简单外键完成显示不可编辑的下拉小部件

    我有一个国家模型 class Country models Model name models CharField max length 200 def str self return self name 这是由 UserDetails 模
  • Django - CreateView 具有多个模型

    我可以使用 Django 吗创建视图 https docs djangoproject com en 1 9 ref class based views generic editing django views generic edit C
  • Redis+Docker+Django - 错误 111 连接被拒绝

    我正在尝试使用 Redis 作为使用 Docker Compose 的 Django 项目的 Celery 代理 我无法弄清楚我到底做错了什么 但尽管控制台日志消息告诉我 Redis 正在运行并接受连接 事实上 当我这样做时 docker
  • 用于渲染 html 子集的 Django templatetag

    我有一些 html 在本例中是通过 TinyMCE 创建的 我想将其添加到页面中 但是 出于安全原因 我不想只打印用户输入的所有内容 有谁知道模板标签 最好是过滤器 只允许呈现 html 的安全子集 我意识到 Markdown 和其他人就是
  • Django 多对多关系(类别)

    我的目标是向我的 Post 模型添加类别 我希望以后能够按不同类别 有时是多个类别 查询所有帖子 模型 py class Category models Model categories 1 red 2 blue 3 black title
  • Django 独特的不工作

    我在从查询中过滤掉重复项时遇到问题 我正在使用 Django 1 4 和 Postgres 8 4 13 我在我的模型对象上使用这个查询 它是一个 jquery 自动完成 term request GET get term field re
  • UnicodeDecodeError:部署到 Heroku 时,“utf-8”编解码器无法解码位置 0 中的字节 0xff

    我尝试在heroku上部署我的简单django项目 但我不明白如何解决这个问题 这是git push heroku master remote Traceback most recent call last remote File tmp
  • Django 模型在模板中不可迭代

    我试图迭代模型以获取列表中的第一个图像 但它给了我错误 即模型不可迭代 以下是我的模型和模板的代码 我只需要获取与单个产品相关的列表中的第一个图像 模型 py class Product models Model title models
  • djangorest框架更改主键以使用唯一字段

    我有一个模型叫做GameProfile 这是一对一的关系User模型 我用了HyperlinkedModelSerializer贯穿我所有的设计 For the GameProfile 用户字段应该是查询的主键 它是唯一的但我没有将其设置为
  • 限制 django 应用程序模型中的单个记录?

    我想使用模型来保存 django 应用程序的系统设置 因此 我想限制该模型 使其只能有一条记录 极限怎么办 尝试这个 class MyModel models Model onefield models CharField The fiel

随机推荐

  • 估算数据的多项回归

    我需要估算缺失的数据 然后使用生成的数据集进行多项回归 我尝试使用小鼠进行插补 然后使用 nnet 中的多项函数进行多项回归 但这给了我不可读的输出 以下是使用 mouse 包提供的 nhanes2 数据集的示例 library mice
  • 证书注册流程是怎样的?

    我正在寻找注册证书的程序 我搜索了很多但没有找到好的答案 到目前为止 我明白首先我必须生成一个密钥存储 用于创建公钥和私钥 然后私钥应保持私有 公钥与其他信息 如名称和组织 一起发送到 CA 然后CA会生成一些东西并返回给我一些包含公钥和信
  • .Net 正则表达式将 $ 与字符串结尾而不是行匹配,即使启用了多行

    我试图突出显示降价代码 但遇到了 NET 正则表达式多行选项的奇怪行为 下面的表达式 在任何在线正则表达式测试工具上都可以正常工作 但它拒绝与 net 一起使用 它似乎没有考虑 标签 只是突出显示所有内容 直到字符串末尾 无论如何 这是我的
  • Pyinstaller:AttributeError:模块“enum”没有属性“IntFlag”[重复]

    这个问题在这里已经有答案了 我需要将python代码编译为exe 我找到了一些如何做到这一点的指南 其中要求我为此安装 PyInstaller pip install upgrade pyinstaller 但我收到下一个错误 C User
  • 使用 Monotouch 处理 iOS 的 UITableViewSource 事件

    我试图捕获并处理一个事件 当 a 的元素UITableViewSource被点击 这是我的代码 public class TableViewSource UITableViewSource public event EventHandler
  • HSpec 无预期编译失败

    我正在学习 Haskell 并且编写了这个函数 safeHead a gt Maybe a safeHead Nothing safeHead x xs Just x 我现在尝试用 HSpec 测试它 import Test Hspec m
  • Eclipse 中的 XSLT 2.0 无需额外的库?

    是否可以在 Eclipse 中执行 XSLT 2 0 转换而无需额外的库 AltovaXML Saxon 答案是否定的 您需要安装 XSLT 2 0 处理器 例如 Saxon
  • 编译器和汇编器位于计算机的哪里?

    所以我知道最基本的知识 编译器将源代码转换为汇编代码 汇编器将汇编代码转换为机器代码 但我无法正确谷歌搜索 它们实际上位于哪里 我假设编译器位于硬盘驱动器上的某个位置 因为您可以从网络下载编译器并将它们用于各种编程语言 汇编器是位于硬盘上
  • python请求获取cookie

    x requests post url data data print x cookies 我使用requests库从网站获取一些cookie 但我只能获取cookie 从响应中 如何从请求中获取cookie 谢谢 或者 您可以使用requ
  • 如何动态设置 Rust 数组长度?

    我想创建这样的数组 let arr 0 length 其中长度是ausize 但我收到这个错误 E0307 The length of an array is part of its type For this reason this le
  • 由于打开相机时内存不足,phonegap Android 应用程序崩溃

    我正在使用 PhoneGap v1 3 0 开发 Android PhoneGap 应用程序我的应用程序有一个按钮 当单击该按钮时 使用phonegap api启动相机 当用户捕获图像时返回照片路径 但发生的情况是应用程序在相机返回之前崩溃
  • 使用httprequest下载文件

    是否可以使用 httprequest 从网站下载文件 我只习惯用它来获取页面的源代码 如果无法使用 httprequest 来完成此操作 是否可以使用 C 下载文件而无需使用网络浏览器 编辑 答案必须允许我选择硬盘上将文件下载到的位置 你绝
  • (PHP) 如何将 crypt() 与 CRYPT_BLOWFISH 一起使用?

    首先 我发现要使用 CRYPT BLOWFISH 我需要使用以 2a 开头的 16 字符盐 但是 那crypt 的 php net 文档说有些系统不支持CRYPT BLOWFISH 这种情况有多常见 接下来 从文档上的示例中 我看到我使用
  • 可以用相机测量到物体的距离吗?

    可以用手机摄像头测量到物体的距离吗 我的意思是 在我的应用程序中 我启动相机 将相机面对物体 比如说房子 然后按下按钮 它会计算距离并在屏幕上显示我 如果可能的话我可以在哪里找到一些教程或相关信息 我承认这个问题已经得到了充分的回答 明显需
  • 为什么两个浮动 div 之一被推到下一行?

    我有两个 div 我想将其放在一行中 第一个具有固定宽度 第二个没有设置宽度 如果我尝试将两者都设置为 float left 则第二个 div 将转到下一行 如果它包含太多单词 但如果第二个是非浮动的 它会与第一个 div 保持在同一行 为
  • jenkins字符串参数的字符串长度限制是多少

    现在我创建一个带有字符串参数的jenkins作业 该参数来自上游作业 我只是想知道字符串参数的长度是否有限制 因为此信息是从上游作业获取的 并且它是一个非常长的字符串 我相信没有人真正提供答案 因为没有理由限制底层技术 让我们看看 爪哇 J
  • 使用 Numpy 进行高效求和面积表计算

    我正在尝试计算面积求和表使用 python 和 numpy 构建特征计数矩阵 目前我正在使用以下代码 def summed area table img table np zeros like img astype int for row
  • 在 Node.js 中,如何“包含”其他文件中的函数?

    假设我有一个名为 app js 的文件 很简单 var express require express var app express createServer app set views dirname views app set vie
  • Material Design Lite - 文本字段中的底线与彩色线有轻微间隙

    我正在尝试让 Material Design Lite 文本字段正常工作 但遇到一个问题 底部彩色线与灰色起始线之间有轻微的 3 4 px 间隙 我插入页面的任何 MDL 文本字段示例都会得到相同的结果 什么可能在本地触发该问题 我还在前端
  • Django(使用 TokenAuthentication):“non_field_errors”:“无法使用提供的凭据登录?

    我正在使用 httpie 来测试我的自定义身份验证 http POST http 127 0 0 1 8000 api token auth username username1 password Password123 我确实使用创建了一