在我们的应用程序中重现的步骤:
- 登出。
- 清除缓存。
- 重新加载页面。
- 登录。实际:您留在首页。预期:应用程序打开。
如果用户登录(特别是 ),我们的主模板会显示应用程序{{#if currentUser}}
。否则,它会显示一个启动页面,用户可以在其中创建帐户并登录。
我们正在使用{{loginButtons}}
助手。
这会是一个用例Meteor.flush()
吗?如何在用户登录时触发它?Meteor.autorun()
?
在我们的应用程序中重现的步骤:
如果用户登录(特别是 ),我们的主模板会显示应用程序{{#if currentUser}}
。否则,它会显示一个启动页面,用户可以在其中创建帐户并登录。
我们正在使用{{loginButtons}}
助手。
这会是一个用例Meteor.flush()
吗?如何在用户登录时触发它?Meteor.autorun()
?
难道逻辑实际上不在您定义的模板中,而是在 index.html 本身中?如果它没有被分解成某种首页逻辑模板,您可以从中调用其他模板,我可以看到这可能会导致问题。只是一个想法。
有几件事导致了这里的解决方案。
我重组了我的首页模板以考虑{{loggingIn}}
到这一点。之前,我只使用{{currentUser}}
.
我确保我没有Session
在模板助手中设置变量,尤其是那些我也在其他代码路径中获取它们的变量。这就解释了为什么这个问题感觉像是一个竞争条件,并且正如我所说的那样只发生在“冷缓存”中。
此外,视图没有改变的原因是因为错误阻止它这样做。所以这是一个症状,而不是实际问题(尽管我确实需要稍微改进模板条件)。