【问题标题】:how to get the user details using jwt authentication in django rest framework?如何在 django rest 框架中使用 jwt 身份验证获取用户详细信息?
【发布时间】:2017-05-13 11:08:45
【问题描述】:

我正在尝试使用 JWT 令牌身份验证获取用户详细信息。我可以使用 BasicAuthentication 和 JsonWebToken 身份验证来获取它们。我正在尝试使用 JWT 获取详细信息。

class PermissionView(APIView):
    permission_classes = [IsAuthenticated]
    authentication_classes = [BasicAuthentication,JSONWebTokenAuthentication]

    def get(self, request,format=None):
        data = {
            'username': request.user.username,
            'password':request.user.password,

        }
        return Response(data)

网址:

url(r'^api-token/$', obtain_jwt_token),

输出: 1) 生成令牌

2) 使用基本身份验证和 JsonWebTokenauthentication 获取用户详细信息]

我正在尝试使用 JWT 令牌获取用户详细信息或验证用户详细信息。帮助将不胜感激?

【问题讨论】:

  • 为什么要获取用户密码?我认为你缺少自我,所以它看起来像 self.request.user.username

标签: python django jwt


【解决方案1】:

让我们重温 Django 流程中的 JWT 以了解一些东西:

  1. 用户使用其用户名和密码从 url api-token-auth 请求令牌。
  2. jwt 对用户进行身份验证并返回一个令牌供您以后使用(这是由 JWT 框架为我们完成的)
  3. 接下来,当您发送令牌时,JWT 身份验证类将为您验证令牌并使用您想要的用户信息填充请求,以便您以后可以在视图中使用它们。

结论:您会在请求对象中找到当前正在请求您的API的用户为request.user

【讨论】:

  • 当我在我看来使用request.user 时,我的用户总是匿名使用 JWT 身份验证,即使在包含此处描述的中间件之后:github.com/GetBlimp/django-rest-framework-jwt/issues/45 你是如何设置中间件的?填充 hte request.user 需要什么特别的东西吗?谢谢!
  • 中间件设置没什么特别的。在您看来,我不明白 JsonWebToken 身份验证(您所说的身份验证)和 JWT 身份验证之间有什么区别。基本上 JWT 代表 json web token。我只使用发布请求来验证具有用户名和密码的用户,然后保存从请求返回的令牌,并将此令牌添加到以后请求的标头中,这就是我设置项目工作所需的一切。跨度>
猜你喜欢
  • 1970-01-01
  • 2019-03-01
  • 2021-12-21
  • 2012-09-15
  • 2018-11-07
  • 2019-01-27
  • 1970-01-01
  • 2020-05-02
  • 2019-05-02
相关资源
最近更新 更多