Nodejs:你如何区分用户?

时间:2015-02-25 02:29:20

标签: node.js cookies

我是后期的新手。我能想到的只有这样:

  1. 在访问时如果没有cookie则执行下一步
  2. 生成唯一ID,然后将其设置为Cookie
  3. 然后在每个请求时检查数据库中是否存在该ID,如果不存在则转到步骤1.
  4. 如果它存在,则获取该ID下的数据并根据需要进行响应。
  5. 现在安全吗?是否符合逻辑?实际发生了什么。

    使用的方案:

    这适用于未登录的用户。基本上,用户访问我的网站,点击需要时间的东西..所以用户被重定向到一个等待gif的页面,同时使用ajax(长轮询)服务器请求结果。现在要区分来自多个用户的请求,我认为这将起作用。这很重要,因为我将要发回的数据将来自第三方。

1 个答案:

答案 0 :(得分:3)

如果你想要:

,你必须事先做出决定
  1. 指定浏览器的临时会话,该会话仅适用于某个特定浏览器中的该用户,并且可以随时重置
    1. 与特定用户关联的长期会话,用户可以随时随地使用这些会话。
    2. 第一个可以使用服务器或客户端生成的cookie来完成,该cookie是任何全局唯一值。然后,您可以将该ID用作数据库中的密钥,以获取用户在任何给定请求上的服务器端设置/数据。在node.js中,有许多与会话相关的NPM模块将自动处理为您生成的sessionID。第一种方法的问题在于它依赖于在用户浏览器中保存cookie值。 cookie不仅可以是时间的(它们可以被清除),而且它们只能在一个特定的浏览器中设置。

      如果您只计划在一个会话期间使用它,那么第一个方法应该可以正常工作。通常将时间值(例如Date.now())与随机数组合用于唯一ID。由于在同一ms中不能处理两个请求,因此可以保证唯一的id值。添加随机数以使其无法预测。其他NPM会话模块提供更多功能,如加密密钥等......

      第二种方法需要某种标识符,用户必须输入该标识符才能知道它是哪个用户(通常是电子邮件地址)。如果您不希望其他人仅通过了解其用户ID来模拟用户,那么您还需要输入密码。这实际上需要在您的网站上进行注册过程,用户最终会获得用于登录您网站的用户ID和密码。


      代表用户看到用于短期存储的第一种方法并不罕见。例如,您未注册的网站上的购物车。

      具有用户登录的所有站点都使用第二种方法。