![](/img/trans.png)
[英]How to only allow authenticated (logged in) users to access Spring restful service
[英]Identifying non-logged in users in a stateless RESTful API
我正在开发无状态RESTful API,它将由iOS应用程序和AngularJS浏览器应用程序使用。 在此API中,对于与身份验证的用户特别相关的任何操作(添加新内容,编辑详细信息等),都需要身份验证令牌。
现在,我的应用程序还需要未经身份验证的用户才能将商品添加到他们的购物车中。 这是我不确定的地方。 由于应用程序是无状态的,因此没有会话-如果用户尚未登录并获得访问令牌,我不确定如何识别用户。
我正在考虑的一种解决方案是生成其他一些较低级别的令牌,这些令牌将标识此未登录的用户。 然后,我可以将其与每个获取和修改购物车的请求一起发送。
此处描述的问题并不是实际上您需要令牌,而是需要一种方法来唯一标识特定的购物车。
基于这个问题,我的假设是存在一个通用的/cart
端点,该端点根据与之交互的对象而具有不同的内容。 这种设计有点麻烦(如您所见),因为每个用户只有一个唯一的购物车uri可能会更好。
/cart/[some-unique-id]
但是,即使在这种情况下,您可能仍想使用某种形式的身份验证来识别仍允许修改购物车的人员。
如果您使用的是OAuth2,最简单的方法就是创建一个新的授权类型。 OAuth2是可扩展的,因此您可以肯定地添加一些不需要任何信息而仅提供承载令牌的“匿名”授予类型。
在这种情况下,您的服务器将始终必须确保令牌有效,而且还要确保其仍然正确禁止访问需要“真实身份验证”的端点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.