我正在为一个个人项目建立一个eCommerce网站。它使用React作为前端,使用运行在django上的REST API作为后端。我希望用户能够添加项目到购物车和下订单,而不需要帐户。
对于访客用户,使用会话/cookie来存储信息是很棒的,但是对于登录的用户,我希望使用数据库来存储购物车中的项目。这将需要创建一个用户并给他们一个身份验证令牌,这样他们就可以执行必要的操作。
那么,我应该使用会话/cookie身份验证,还是有更好的方法来使用JWT来实现我想要的结果呢?
发布于 2019-11-22 12:39:49
这两种方法都可以很好地工作。然而,我目前正在做一些类似的事情,我个人推荐更简单的选择,那就是经典的会话方法。JWT令牌可能更难维护,如果处理不当,有时还会变得不安全。此外,JWT令牌不会在两次登录之间持续存在。
在这两种情况下,我不明白为什么创建和维护购物车会更好,除非会话系统实际上可以在会话本身中存储完整的购物车。然后,您可以在API级别实现会话控制器。例如: GET "https://{host}/api/cart"
返回会话购物车中的商品。
# Django session
request.session['cart_id'] = cartId
# JWT Tokens
jwt.encode({‘cart_id’: cartId} ...
小纸条..如果您使用的是react的本地主机和API的远程服务器,那么设置会话可能会比较困难。(cookie通常是按每个域设置的)。
发布于 2019-11-29 00:17:08
我正在使用JWT,我认为如果您使用的是数据库,您可以创建一个生成的JWTby用户,然后将其存储在数据库中,您可以在参数中控制JWT的可用性,我发现保护您的API的最好方法是将JWT令牌添加到标头。
发布于 2019-11-29 11:23:26
如果您将在AWS中托管您的应用程序,请查看AWS Cognito,它是一个身份和用户池服务。他们的免费级别是相当慷慨的。再加上AWS Amplify非常适合React,这将为您提供开箱即用的身份验证和用户管理。
https://stackoverflow.com/questions/58946089
复制相似问题