我可以通过 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 和 AWS - 错误 401