我正在为一个个人项目建立一个电子商务网站。它在前端使用React,在后端使用django上运行的REST API。我希望用户无需帐户即可将商品添加到购物车并下订单。
对于来宾用户,使用会话/ cookie来存储信息非常棒,但是对于已登录的用户,我想使用数据库将项目存储在购物车中。那将需要创建一个用户并给他们一个auth令牌,以便他们可以执行必要的操作。
那么我应该使用会话/ cookie身份验证,还是有更好的方法来使用JWT实现我想要的功能?
答案 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集成在一起。这将有助于在应用程序外部管理用户。