我应该在电子商务网站上使用JWT还是Sessions?

时间:2019-11-20 03:16:32

标签: django rest api session jwt

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

对于来宾用户,使用会话/ cookie来存储信息非常棒,但是对于已登录的用户,我想使用数据库将项目存储在购物车中。那将需要创建一个用户并给他们一个auth令牌,以便他们可以执行必要的操作。

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

4 个答案:

答案 0 :(得分:0)

两种方法都可以很好地工作。但是,我目前正在从事类似的工作,我个人将推荐较为简单的选项,这是经典的会话方法。 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。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

如果您要在AWS中托管应用程序,请签出AWS Cognito,它是一种身份和用户池服务。他们的免费套餐非常安静。这样,再加上适用于React的AWS Amplify,将为您提供开箱即用的身份验证和用户管理。

答案 3 :(得分:0)

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