1

我正在开发一个无状态的 RESTful API,它将被 iOS 应用程序和 AngularJS 浏览器应用程序使用。在此 API 中,任何与经过身份验证的用户相关的操作(添加新内容、编辑详细信息等)都需要身份验证令牌。

现在,我的应用程序还要求未经身份验证的用户能够将商品添加到他们的购物车中。这是我不确定的地方。由于应用程序是无状态的,因此没有会​​话 - 如果用户尚未登录并获得访问令牌,我不确定如何识别用户。

我正在考虑的一种解决方案是生成其他一些较低级别的令牌,以识别这个未登录的用户。然后我可以在每个请求中发送这个来获取和修改购物车。

4

1 回答 1

1

这里描述的问题并不是你需要一个令牌,而是你需要一种唯一标识特定购物车的方法。

我基于这个问题的假设是,有一些通用/cart端点,根据与之交互的人而具有不同的内容。这种设计有点问题(如您所见),因为每个用户只有一个独特的购物车 uri 可能会更好。

/cart/[some-unique-id]

但是,即使在这种情况下,您可能仍希望使用某种形式的身份验证来识别仍然允许修改购物车的人。

如果您使用的是 OAuth2,最简单的方法就是创建一个新的授权类型。OAuth2 是可扩展的,因此您绝对可以添加一些不需要任何信息但只提供不记名令牌的“匿名”授权类型。

在这种情况下,您的服务器必须始终确保令牌有效,但还要确保它仍然正确地禁止访问需要“真正身份验证”的端点。

于 2018-03-11T09:22:54.930 回答