2

我使用 Django REST 和 Djoser 作为我的身份验证服务。但是,当向 djoser auth 端点发出 post 请求时,例如.../auth/token/login,我得到的唯一响应是auth_token: xxxxx

例如,如果我发出成功的发布请求,例如:

{
  "username": "joe@gmail.com",
  "password": "test12345"
}

我的回应是

"auth_token": "XXXXXXXX"

但我想检索的不仅仅是一个令牌,例如

"auth_token": "XXXXXXXX",
"user_id": 8

关于如何实现这一点的任何想法?

4

1 回答 1

0

创建您自己的自定义令牌获取视图,如下所示,

from rest_framework.authtoken.views import ObtainAuthToken
from rest_framework.authtoken.models import Token


class TokenObtainView(ObtainAuthToken):
    def post(self, request, *args, **kwargs):
        serializer = self.serializer_class(data=request.data,
                                           context={'request': request})
        serializer.is_valid(raise_exception=True)
        user = serializer.validated_data['user']
        token, created = Token.objects.get_or_create(user=user)
        custom_response = {
            'token': token.key,
            'user_id': user.id
        }
        return Response(custom_response)

然后把你的TokenObtainView班级连接到你的urls.py

urlpatterns = [
    # other patterns
    path('path/to/your/custom/token/view/', views.TokenObtainView.as_view(), name='new-token,obtain-view')
]

现在开始,您应该使用端点path/to/your/custom/token/view/来获取您的自定义响应。

于 2019-12-14T02:09:11.713 回答