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

Posted

技术标签:

【中文标题】我可以通过 django-rest-auth 登录和注册返回 JSON Web Token (JWT) 吗?【英文标题】:Can I return JSON Web Token (JWT) through django-rest-auth login and registration? 【发布时间】:2020-10-03 17:23:13 【问题描述】:

我正在尝试通过 django-rest-auth 从我的 rest API 返回 JWT,但它提供了不同类型的令牌,例如。 9054f7aa9305e012b3c2300408c3dfdf390fcddf。 我有自己的 JWT TokenObtainPairSerializer,如下所示: class MyTokenObtainPairSerializer(TokenObtainPairSerializer): @classmethod def get_token(cls, user): email = user.email token = super(MyTokenObtainPairSerializer, cls).get_token(user) # Add custom claims token['first_name'] = user.first_name token['last_name'] = user.last_name token['email'] = user.email return token 我希望 django-rest-auth 通过登录返回我的自定义 JWT。 任何帮助将不胜感激。 P.S:我搜索了谷歌和其他堆栈溢出问题,但找不到我真正想要的。

【问题讨论】:

您尝试解码令牌吗?它应该包含您在令牌中提供的详细信息。 @sonus21 这个django提供的token其实只是用来访问API的。我想要实现的是,返回 JWT 而不是 django 的内置令牌。 如果你有 MyTokenObtainPairSerializer 并且你有 JWT,那么它应该可以工作。你启用 JWT 了吗? 我正在寻找一种将 JWT 与 Django-rest-auth 结合使用的方法,但失败了。我可以使用其他选项通过 Django-rest-auth 返回 JWT 吗? 我在 settings.py 中使用了类似的东西:REST_AUTH = 'REST_AUTH_TOKEN_MODEL' : 'JWT', 'REST_USE_JWT':True, 【参考方案1】:

要将 JWT 与 django rest_auth 一起使用,您必须在 settings.py 中设置以下配置:

    REST_USE_JWT = True
    REST_FRAMEWORK = 
        'DEFAULT_AUTHENTICATION_CLASSES': [ 
              'rest_framework_jwt.authentication.JSONWebTokenAuthentication', 
        ], 
     

还记得安装rest_framework_jwt 并添加到您的INSTALLED_APPS

【讨论】:

以上是关于我可以通过 django-rest-auth 登录和注册返回 JSON Web Token (JWT) 吗?的主要内容,如果未能解决你的问题,请参考以下文章

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

使用django-rest-auth自带登录注册api

Django-rest-auth Facebook 注册

Django-rest-auth 和 AWS - 错误 401

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

Django-rest-auth和AWS - 错误401