【问题标题】:How to track users without authentication on nodeJS如何在 nodeJS 上跟踪没有身份验证的用户
【发布时间】:2017-07-07 13:45:53
【问题描述】:

我使用 nodeJS 开发了一个移动 Web 应用程序。所有用户无需身份验证即可访问数据(食物、菜单等)。他们可以列出产品,喜欢它们,或将它们标记为收藏 ..etc 我想要的是给它们唯一的 ID(首次访问时)在他们每次访问时识别他们,并通过将这些操作存储在我的数据库中来跟踪他们的操作我想要这样,因为当他们重新访问我的应用程序时,我会说 “您已将 3 个产品标记为本月的最爱!”要么 “显然你喜欢汉堡包(列出的汉堡包类别 22 次)

简而言之,当用户第一次访问我的网络应用时

  • 定义(或分配)唯一 ID 并将 ID 存储在客户端

当用户第二次访问我的网络应用时

  • 检查客户端存储是否有任何 ID
  • 如果为真,则列出用户最近的活动;

    var uID = "ID data on client-side."
    db.users.findOne({ userID: uID }, function(err, user){
       if(err){
       res.send("you are here for the first time!");
       // >>> create new unique ID HERE and assign it to the user !!<<<
     } else {
       res.send("you were here before");
       // already have an ID, go on
        }
    })
    

快速提示:ID 必须一直存在(在客户端),直到用户以某种方式将其删除。

【问题讨论】:

  • 我想你会想看看 cookie。这些存储在客户端,直到他们清除浏览器历史记录。 expressjs.com/en/resources/middleware/cookie-parser.html
  • 如果这是一个基于浏览器的应用程序,那么您有两个主要选项,cookie 和本地存储。两者都不是完全永久的(可以由用户或浏览器维护清除),但通常会为您服务。 cookie 的优点是它们会在每次请求时自动与服务器共享,这样服务器就可以知道用户是谁。不使用用户登录的缺点是同一用户无法在不同的设备上或者如果他们获得新设备(例如切换到新手机)上代表自己。
  • @jfriend00 你说得对。我对此非常担心。但至少我知道除了使用 cookie 我别无选择。

标签: node.js mongodb client-side-data


【解决方案1】:

如果这是一个基于浏览器的应用程序,那么您有两个主要选项,cookie 和本地存储。两者都不是完全永久的(可以由用户或浏览器维护清除),但通常会为您服务。

cookie 的优点是它们会在每次请求时自动与服务器共享,这样服务器就可以知道用户是谁。

不使用用户登录的缺点是同一用户无法在不同设备上或如果他们获得新设备(例如切换到新手机)上代表自己。

如果您在服务器上使用 Express,那么您可以将 express-session 与持久会话存储结合使用,然后 express-session 将自动创建 cookie,您可以在会话中存储您想要的任何用户特定数据,并且只要 cookie 存在,它就会持续存在(实际上数据会持续更长时间,但您只能将其与用户关联,只要 cookie 存在)。这也将允许您通过支持非登录世界在未来“扩展”您的功能,还允许用户添加登录,以便他们甚至可以从其他设备访问他们的信息。

【讨论】:

  • 这正是我所需要的。还给他们一个添加登录的选项是个好主意。谢谢!
  • @OrhanBayram - 如果这回答了您的问题,那么您可以通过单击答案左侧的复选标记向社区表明这一点。遵循正确的程序,这也将为您赢得一些声誉积分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-18
  • 1970-01-01
  • 2015-02-06
  • 1970-01-01
  • 1970-01-01
  • 2016-12-31
  • 1970-01-01
相关资源
最近更新 更多