我正在使用Django 1.8版并使用django-rest-framework-jwt进行身份验证。 验证后,我们的应用程序将返回前端,并提供以下信息:
from rest_framework_jwt.settings import api_settings
from rest_framework.response import Response
from django.contrib.auth.models import User
jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER
jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER
user.profile_picture = "test_profile_picture.jpg" #user is django.contrib.auth.models.User object
payload = jwt_payload_handler(user)
token = jwt_encode_handler(payload)
jwt_login_response = {
"token": token
}
return Response(jwt_login_response,status=status.HTTP_200_OK)
在前端,我们将通过
进行解码import jwtDecode from 'jwt-decode';
var decodedToken = jwtDecode(token);
但目前decodeToken只包含django-rest-framework-jwt默认的值
Object {username: "test", user_id: 9, email: "test@gmail.com", exp: 1454754137}
我想在profile_picture
这样的jwt中存储更多信息,但我不知道如何。我真的想找到解决这个问题的方法。
答案 0 :(得分:6)
您可以使用JWT_PAYLOAD_HANDLER
setting覆盖附加到令牌的有效内容。
默认实施包括username
,user_id
,email
和exp
(到期时间),正如您所注意到的那样。您可以找到默认实现on GitHub。
答案 1 :(得分:0)
我认为您需要的是自定义用户模型。您可以通过创建包含所需字段的新模型来创建此项,并通过One-One关系将其引用到默认用户模型。
此链接可能有所帮助 - http://blog.mathandpencil.com/replacing-django-custom-user-models-in-an-existing-application/