在 SPA 中对访客/匿名用户进行身份验证

Posted

技术标签:

【中文标题】在 SPA 中对访客/匿名用户进行身份验证【英文标题】:Authenticating guest/anonymous users in SPAs 【发布时间】:2021-04-15 07:10:31 【问题描述】:

我正在使用 react 和 laravel 创建一个电子商务商店。用户身份验证是通行证和 jwt 令牌,但我想知道保存来宾用户信息(例如购物车物品)的最佳做法是什么,以及... LocalStorage 是一个选项,但是如果我们需要分析数据怎么办 另一种选择是使用 cookie 和会话,在这种情况下,这违反了宁静...

【问题讨论】:

这是非常基于意见的。我的意见是您可以向来宾用户颁发令牌,并且您的客户端可以确保始终在每个请求上发送令牌。这样你就可以在没有 cookie 的情况下保持某种“会话”打开 是否有开箱即用的 laravel 身份验证包(如护照)实现?如何区分具有不同权限的登录令牌和访客令牌。奇怪的是我找不到关于这种事情的任何信息,好像没有人需要攻击访客用户...... 就我个人而言,我只会创建一个新的用户模型,将模型标记为“访客”用户并发出令牌。然后每周扫一次访客用户什么的。如果用户想注册到您的网站但您是对的,这也将允许您轻松地将访客用户帐户转换为普通用户帐户,但我认为目前还没有行业标准的方式来做到这一点。做自己的事。 【参考方案1】:

如你所说;在 LocalStorage 中保留访客购物车物品以及收藏夹(如果有的话)之类的东西是很好的解决方案;这样一来,您就不会让您的后端保持忙碌,也不会丢失客户的数据,比如说,如果您希望客人注册以完成他们的购买。

用于分析部分;您可以运行单独的分析逻辑并将其发送到 Google Analytics(如果编写自己的工作量太大)。查看 react-ga 包。您可以跟踪事件,如商品页面上的滚动位置、商品添加到购物车的次数等。

https://www.freecodecamp.org/news/performance-and-user-tracking-in-react-with-google-analytics/

【讨论】:

感谢您的回答和精彩的文章分享,但我不只是在寻找解决方案,而是在寻找最好的方法,某种行业标准(最佳实践)无状态或有状态令牌的字段。 对不起,我不完全了解行业标准;但可以肯定的是,这取决于项目(需求、公司、时间、访客数量..)如果它是一家大公司,不要关心成本、维护、时间和人员;我将使用我自己的分析逻辑创建一个单独的后端来保存购物车物品、带有访客令牌的收藏夹。如果它只是一个常规项目并且我想让事情变得更容易,那么肯定会去 LocalStorage 路径,因为不认为访客令牌是必要的。将数据保存在用户浏览器中,我收集项目分析并发送给 Google。我以前在一个小型精品店网站上做过 LocalStorage。

以上是关于在 SPA 中对访客/匿名用户进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章

带有访客和身份验证中间件的 Nuxt 身份验证将经过身份验证的用户在刷新时重定向到错误的页面

如果用户已经通过登录页面或 auth0 进行了身份验证,我们是不是需要在 websocket 连接中对用户进行身份验证?

如何在微服务架构中进行身份验证和授权

SPA (Aurelia) + ASP.NET Core WebAPI + Google 身份验证

如何在 shoudPerformSegueWithIdentifier 和 Firebase 中对用户进行身份验证?

使用 Node.js 和 SPA 进行 SAML2.0 身份验证