无需用户身份验证即可保护REST Api的最佳方法

时间:2014-03-14 00:17:26

标签: security rest backbone.js ember.js ember-data

这是否可能。

给定的场景是我使用ember.js或backbone.js构建商店。商店将能够获得所有产品和个别产品。但是,当用户想要购买物品时,他们会直接进行结账,并且没有购物车或用户注册/登录过程。我想知道是否有可能以某种方式验证新的POST请求,以更新数量并回发用户发货信息,而不是基于用户是否已登录并已经过身份验证但可能基于请求的来源。 ?例如,基于IP或基于客户端上存在的SSL证书的签名。

我一直在使用Parse来使用后端并在前端使用ember,ember数据提供了很好的资源来与REST apis接口,但大多数都要求将密钥以某种方式传递给请求并因此放置在客户端代码内。不好。如何用我给定的场景实现这一点,或者根本不可能实现?

1 个答案:

答案 0 :(得分:2)

我不确定您将如何区分哪些用户订购了什么,而不会让他们自己进行身份验证。

在线商店通常以两种方式之一执行此操作:

  1. 让用户注册并登录。这样用户就可以通过身份验证和验证
  2. 让用户在用户进行购买时在页面上提供送货信息
  3. 使用选项1,您可以知道哪些用户订购了什么,这有点明显,因为您已经在Ember.js应用程序和服务器端验证了用户。

    使用选项2,您仍然需要创建浏览器中的cookie或以其他方式存储可以与用户数据一起发送到服务器的标识符。这样,当用户回来购买时,您仍然可以识别用户购买的内容,并在您的应用中采取相应的行动。

    所以你的过程将是:

    1. 在用户进入您的网站时为其创建并分配Cookie
    2. 当用户进行购买时,您将询问用户一些额外信息(送货信息,姓名等)。将其发送到服务器,然后服务器也会收到cookie信息。
    3. 当用户从他们的购买回来时(我假设您在这里使用第三方支付处理器,将使用您服务器上的URL回叫),您的服务器端将知道购买的状态(已批准,拒绝,等等,并根据用户购买时的cookie,您可以向用户显示他们购买的状态。
    4. 这样做的缺点是,如果用户使用其他设备,浏览器或删除其Cookie,您将无法向用户显示其先前的购买信息。

      我希望能回答你的问题。