Nodejs:你如何区分用户?

Nodejs: How do you differentiate between users?

我是后端新手。我唯一能想到的方法是:

  1. 访问时如果没有 cookie 则执行下一步
  2. 生成唯一ID,然后将其设置为cookie
  3. 然后根据每个请求检查该 ID 是否存在于数据库中,如果不存在则转到第 1 步。
  4. 如果它存在,则获取该 ID 下的数据并根据需要做出响应。

现在安全吗?合乎逻辑。实际发生了什么。

使用场景:

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

如果你想要一个,你必须预先决定:

  1. 给定浏览器的临时会话,仅在一个特定浏览器中为该用户工作,并且可以随时重置

  1. 与特定用户关联的长期会话,用户可以随时从任何浏览器使用该会话。

第一个可以使用服务器或客户端生成的任何全局唯一值的 cookie 来完成。然后,您可以将该 ID 用作数据库的键,以根据任何给定请求获取用户的服务器端 settings/data。在 node.js 中,有许多与会话相关的 NPM 模块会自动为您处理 sessionID 的生成。第一种方法的问题在于它依赖于在用户浏览器中保存 cookie 值。 cookie 不仅可以是临时的(它们可以被清除),而且它们只能在一个特定的浏览器中设置。

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

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


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

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