如何在nodeJS上跟踪没有身份验证的用户

时间:2017-07-07 13:45:54

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

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

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

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

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

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

    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必须始终存在(在客户端),直到用户以某种方式将其删除。

1 个答案:

答案 0 :(得分:1)

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

Cookie的优势在于它们会在每次请求时自动与服务器共享,因此服务器可以告诉用户是谁。

不使用用户登录的缺点是同一个用户不能在不同设备上表示自己,或者他们获得新设备(例如切换到新手机)。

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