我目前在 Accounts Meteor 的实施方面遇到问题。我已经对这个主题进行了多次研究,但我只找到了模糊的信息,而没有得到真正的答案。
我实现了帐户基础和帐户密码,并使用“loginWithPassword”方法管理用户的连接(http://docs.meteor.com/#/full/meteor_loginwithpassword)。 没有问题,用户连接,但是当刷新页面(使用浏览器按钮或刷新编译)时,用户会断开连接。
您知道如何解决这个问题吗?或者您对我可以指导我的地方有什么想法吗?
提前感谢您的回答。
过去几个月我一直在玩 Meteor,不确定 0f 我下面写的内容是否相关/合适。
页面刷新后从控制台运行此命令。
Meteor.user()
如果你得到一个对象,这意味着你仍然登录。只是为了确保你可以探索用户对象并查找服务>>恢复>>登录令牌>>0>hashedToken。
如果上述步骤没问题,则通过运行以下命令检查 ddp 的状态
Meteor.status()
如果这里一切正常(我的意思是如果它显示已连接),那么检查你的路线..
谢谢。
页面加载时,在
Meteor.user()
具有值之前存在延迟。这就是我的案例中真正的问题。
不确定几年前被删除的帐户在该问题中使用了 UI 框架,但这个问题可以在任何现代框架中解决,只需在渲染之前触发钩子以等待令牌。但这是一个坏主意,因为页面加载会出现延迟。
我的解决方案是添加一个持久存储,并在登录时保留
Meteor.user()
的初始成功返回,甚至可以从持久存储的操作中进行登录。
然后你可以观察服务器使令牌失效并在商店中杀死它。商店可以使用令牌过期自行终止其凭证。但更重要的是,在初始页面加载时,如果您有令牌,持久存储将提供本地缓存的登录信息。
如果存在凭据,则假设已登录,然后等待查看它是否已失效,这似乎更好,而不是假设没有凭据,然后在渲染之前等待查看是否有凭据。