带有 django-rest-auth 和 django-rest-knox 的 AttributeError - 令牌序列化器

Posted

技术标签:

【中文标题】带有 django-rest-auth 和 django-rest-knox 的 AttributeError - 令牌序列化器【英文标题】:AttributeError with django-rest-auth and django-rest-knox - Token Serializer 【发布时间】:2019-05-23 18:05:58 【问题描述】:

我目前正在为 React 前端应用程序设置 django 后端。

作为其中的一部分,我使用 django-rest-auth 和 django-allauth 进行注册和身份验证。我想通过 django-rest-knox 实现更好的令牌管理。

我使用以下代码开始并使用 rest-auth 和 allauth(有效)修改我现有的应用程序:

https://gist.github.com/AndrewPix/cdd9276b1d5683459b965d5cc4517b26

我的问题如下:

当我将我的凭据发布到 url /rest-auth/login 时,在后端为正确的用户创建了一个具有所有属性(例如到期日期)的令牌,但我没有得到令牌和用户作为 API 调用的一部分返回。相反,我收到以下错误:

/rest-auth/login/ 处的 AttributeError

尝试在序列化程序 KnoxSerializer 上获取字段 token 的值时出现 AttributeError。 序列化程序字段可能命名不正确,并且与 str 实例上的任何属性或键都不匹配。 原始异常文本是:“str”对象没有属性“token”。

任何帮助将不胜感激。我认为 KnoxSerializer 出了点问题,但我不知道是什么?

谢谢!

上午

【问题讨论】:

【参考方案1】:

修复来自网址!非常简单的深夜错误。 KnoxLoginView 的 URL 路径放在包含 djang-rest-auth url 之后,而不是之前。

通过注册 URL url(r'^rest-auth/login/', views.KnoxLoginView.as_view()) 并将其包含在 url(r'^rest-auth/', include('rest_auth.urls')) 行之前,它可以工作。

【讨论】:

以上是关于带有 django-rest-auth 和 django-rest-knox 的 AttributeError - 令牌序列化器的主要内容,如果未能解决你的问题,请参考以下文章

使用 Django-rest-auth 创建新用户时创建自定义用户模型

Django-rest-auth 和 AWS - 错误 401

有啥方法可以更改登录的 Django-rest-auth 视图?

Django-rest-auth和AWS - 错误401

使用 django-rest-auth 和 allauth 进行 Google 身份验证

我可以通过 django-rest-auth 登录和注册返回 JSON Web Token (JWT) 吗?