【问题标题】:meteor app: how to get a unique session/client id without using accounts流星应用程序:如何在不使用帐户的情况下获取唯一的会话/客户端 ID
【发布时间】:2015-08-26 10:23:41
【问题描述】:

在我的流星应用程序中,我需要能够捕获某种形式的独特元素(会话 ID/客户端 ID 等),以帮助跟踪用户所做的操作。在这一点上,我没有使用帐户包,所以我只是在寻找一种方法来捕获某种客户端唯一数据元素,我可以在数据模型中使用它来跟踪每个唯一用户的活动/步骤。 我可以使用什么应用程序/浏览器/会话元素来代替这个唯一的 id 字符串?

【问题讨论】:

标签: javascript html meteor


【解决方案1】:

This你在找什么?

您可以只使用Random.id() 来获取唯一的 id 字符串。我已经多次使用它来跟踪临时对象,它非常有用。还有其他 Random 方法可能会派上用场。

【讨论】:

  • 对于唯一会话 ID,Random.secret() 会比 Random.id() 更好吗?
  • 您当然可以使用secret(),但ID 并不一定要像密码一样,它们更多地只是为了唯一,以限制冲突。如果您正在为人们创建密码(例如为他们推荐密码),那么 secret 将是一条不错的途径。但我喜欢id() 更易于阅读,尤其是当我需要排除故障时:)
【解决方案2】:

您可以尝试使用 DDP 连接的会话 ID Meteor.connection._lastSessionId。但要小心,因为它基本上是 websocket 会话。所以当客户端打开新标签页或者刷新页面时,这个sessionId就会不一样了。

如果您想在浏览器中保持相同的会话,您可以尝试实现自己的基于 localStorage 的会话。

【讨论】:

    【解决方案3】:

    一些想法:不要使用 Meteor 的 Random.id(),而是将新文档插入 Mongo 集合,这样可以保证不会发生冲突。因为Random.id() 总是有很小的机会返回一个副本。这是一个正确的假设吗?

    Meteor 文档说likely to be unique,即不保证是唯一的。 http://docs.meteor.com/#/full/random

    将文档的_id 存储在Session.set() 调用中,用作您的匿名用户ID,即Session.get("anonUserId") 完成后,您可以将其删除以保持集合修剪。

    【讨论】:

    • 不不不。不要那样做。相信我,这将是我们一生中独一无二的。说真的..
    猜你喜欢
    • 2011-10-22
    • 2015-06-17
    • 2018-03-05
    • 1970-01-01
    • 2015-07-03
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    相关资源
    最近更新 更多