在无状态 RESTful API 中识别未登录用户

Identifying non-logged in users in a stateless RESTful API

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

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

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

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

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

/cart/[some-unique-id]

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

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

在这种情况下,您的服务器将始终必须确保令牌有效,但也要确保它仍然正确地禁止访问需要 'real authentication'.

的端点