【问题标题】:Should I use JWT or Sessions for my eCommerce website?我应该为我的电子商务网站使用 JWT 还是 Sessions?
【发布时间】:2020-03-15 16:24:22
【问题描述】:

我正在为个人项目构建电子商务网站。它使用 React 作为前端,使用运行在 django 上的 REST API 作为后端。我希望用户无需帐户即可将商品添加到购物车并下订单。

对于访客用户,使用会话/cookie 来存储信息非常棒,但是对于登录用户,我想使用数据库将商品存储在购物车中。这将需要创建一个用户并给他们一个身份验证令牌,以便他们可以执行必要的操作。

那么我应该使用会话/cookie 身份验证还是有更好的方法来使用 JWT 实现我想要的?

【问题讨论】:

    标签: django rest api session jwt


    【解决方案1】:

    这两种方法都可以很好地工作。但是,我目前正在研究类似的东西,我个人会推荐更简单的选项,即经典会话方法。如果操作不当,JWT 令牌可能更难维护,有时甚至不安全。此外,JWT 令牌不会在登录之间保留。

    在这两种方式中,我不明白为什么创建和维护购物车会更好,除非会话系统实际上可以将完整的购物车存储在会话本身中。然后,您可以在 API 级别实现会话控制器。 例如:GET "https://{host}/api/cart" 返回会话购物车中的商品。

    # Django session
    request.session['cart_id'] = cartId
    
    # JWT Tokens
    jwt.encode({‘cart_id’: cartId} ...
    

    小提示.. 如果您在 localhost 上工作以进行反应,而在远程服务器上为您的 API 工作,则设置会话可能会更加困难。 (cookie 通常按域设置)。

    【讨论】:

      【解决方案2】:

      我正在使用JWT,我认为如果您使用数据库,您可以创建一个生成的JWTby用户然后将其存储在数据库中,您可以控制您的jwt的可用性,在参数中,我找到了最好的方法为了保护您的 API,将 JWT 令牌添加到标头中。

      【讨论】:

        【解决方案3】:

        如果您将在 AWS 中托管您的应用程序,请查看 AWS Cognito,它是一种身份和用户池服务。他们的免费套餐非常慷慨。这与非常适合 React 的 AWS Amplify 一起,将为您提供开箱即用的身份验证和用户管理。

        【讨论】:

          【解决方案4】:

          我会使用 Cognito 身份验证并将其与 react 和后端 api 集成。这将有助于管理应用程序之外的用户。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-01-05
            • 1970-01-01
            • 2012-02-16
            相关资源
            最近更新 更多