djangorestframework-jwt中的自定义身份验证

时间:2019-07-26 08:06:42

标签: python django django-rest-framework jwt django-rest-framework-jwt

我有两种类型的用户。对于其中一个可以从get_user_model()获得模型的主要用户之一,这是可以的,并且端点是:

导入: no main manifest attribute,

路径: from rest_framework_jwt.views import obtain_jwt_token

path("api/token/", obtain_jwt_token, name="user_jwt")

当我提供用于生成令牌的主要用户凭据时,一切都很好。但是对于其他类型的用户 Teacher ,它需要对djangorestframework-jwt核心代码进行一些更改。 我知道它使用用户名作为默认字段进行登录。对于主要用户,可以,因为它采用这种方式:

http://127.0.0.1:8000/users/api/token/

在这种情况下是电子邮件。我已经在模型中定义了。 但是对于其他类型的用户,它尝试通过这种方式获取用户名:

username_field = get_user_model().USERNAME_FIELD

这是因为用户没有get_username()属性,因为它是常规模型,并且不会从任何模型继承。 所以我需要编辑:

def get_username(user):
    try:
        username = user.get_username()
    except AttributeError:
        username = user.username

    return username

username = user.username 

现在,当我引用自定义身份验证方法时,它会生成令牌。但是对于需要身份验证的访问/请求方法,它将返回401未经授权的无效签名。

出什么问题了?应该如何为我的第二个模型创建自定义身份验证?

0 个答案:

没有答案