Backbone.js,Rest API和匿名会话

时间:2014-07-16 16:00:14

标签: javascript rest session backbone.js cookies

我有一个骨干网络应用程序,它包含几个没有任何身份验证的表单页面。 所有用户都是匿名的,但我需要一种逻辑来识别流程。

实际上这是比较服务。

我通过CORS使用API​​负责提供一些内容,例如查询Vehicule数据库,与保险单和地理位置相关的内容......

没有关于使用数据的问题。

现在问题更多是关于如何通过API中的多步骤表单保存匿名用户数据。

目标是,每当用户点击下一步时,将保存匿名用户数据(这是出于分析原因)并使用这些POST请求保护API。

由于webapp是纯JS,我想做的事情是这样的:

  1. 如果cookie不存在,我在客户端生成一个带有js crypto lib的session_id,并将此session_id存储到一个新的cookie中(有一个到期时间)。然后,骨干模型(Session / Singleton)将负责通过Backbone.save()将此session_id存储到redis-cache存储中。 Redis密钥的到期将与cookie的到期时间相匹配。会话模型的Id属性将是session_id。

  2. 如果存在cookie。我将通过getSession动词从API获取()会话。

  3. 通过这种方式,我可以跟踪每个匿名用户,以便在我的API中保存数据。你认为这是一个好的模式还是太天真?

    现在,关于保护API ...我被卡住了。

    我正在考虑HMAC,但如果密钥存储在客户端(骨干应用程序),为所有用户共享,有人可以检查js客户端代码,甚至是丑陋的,并找到密钥......

    我阅读了很多关于此的文档,但所有人都在谈论用户名/密码/令牌方案,在我的情况下,我只有匿名用户......

    也许,在REST范例中,匿名用户意味着数据不敏感。

    有任何建议吗?

    谢谢,

1 个答案:

答案 0 :(得分:0)

客户端存储的任何内容都不安全。对于SPA,您通常使用用户名和密码对用户进行身份验证。用户通过身份验证后,您会在每个请求的标头中发送一个授权令牌。如果我正确理解您的问题,您是否担心在用户注册时发送和检查敏感数据?如果是这种情况,您最好使用安全连接。我很想知道你认为这对于非骨干或SPA应用程序有何不同?您仍然可以通过HTTP,REST或非REST发送数据。