【问题标题】:Use jwt authentication for Django view?对 Django 视图使用 jwt 身份验证?
【发布时间】:2019-12-30 05:55:19
【问题描述】:

我看到许多博客更喜欢 jwt 而不是基于会话的身份验证。

但是,django 仍然是基于会话的,并且没有切换到 jwt auth 后端的选项。

我认为可以通过定义自定义 JwtMiddleware 来实现(其工作是填充request.user) 但是描述这个过程的在线资源太少了(How add Authenticate Middleware JWT django? 是我唯一找到的)

对 django 视图进行 jwt 身份验证是否令人不悦?

*编辑

我认为原因是(至少对我而言)没有办法将Auth header 添加到页面刷新或<a href> 链接..

而我们可以为 axios 修补 Auth header 或为 rest api 打补丁。

【问题讨论】:

    标签: django jwt


    【解决方案1】:

    不赞成在 django 中使用 JWT。当您选择 jwt 而不是传统的基于会话的身份验证时,会有不同的情况。大多数情况下,基于会话的身份验证是您所需要的。基于 Jwt 的身份验证对于移动设备和/或当您拥有大量登录用户时非常有用。如此之高,以至于即使在分片之后,您也很难处理身份验证。

    大多数博客都告诉你使用 jwt,因为这是一个相对较新的东西。

    【讨论】:

    • 为什么jwt在移动设备上更受欢迎?
    • 因为大部分应用都在后台使用多个微服务。所以用jwt在请求中添加header比处理cookie要容易。
    • 嗯,有道理,但是 Web 服务也可以使用多个微服务。我怀疑还有其他原因。
    • Cookie 存储在移动应用程序中并不容易。参考 - medium.com/@elye.project/…
    【解决方案2】:

    我需要这个:https://github.com/jpadilla/django-rest-framework-jwt

    但你必须使用其余的框架。

    【讨论】:

      【解决方案3】:

      一旦您开始将 JWT 用于 DRF,请使用 DRF 装饰器让 JWT 完成其工作。

      https://www.django-rest-framework.org/api-guide/views/

      from rest_framework.decorators import api_view, schema
      
      @api_view(['GET'])
      @schema(None)
      def getTags(request):
          """Returns the data to display a clould tag"""
          lindex = Lindex()
          return lindex.getTags()
      

      【讨论】:

        猜你喜欢
        • 2021-03-25
        • 2019-01-01
        • 2016-12-17
        • 2021-06-25
        • 2019-12-29
        • 2016-12-16
        • 2019-03-01
        • 2021-12-21
        • 2019-05-02
        相关资源
        最近更新 更多