【发布时间】:2015-03-28 10:53:05
【问题描述】:
我实现了自己的登录系统,因为我使用第三方 Web 服务根据企业身份验证系统对用户进行身份验证。因此,我构建了一个调用服务器方法的表单,以对身份验证系统进行 Web 服务调用,如果凭据有效,它会使用用户 ID 设置会话变量。这就是我更改模板以显示应用程序的主屏幕而不是登录屏幕的方式。工作正常。然后注销按钮只是将 userid 会话变量设置为 false,有效地隐藏了主应用程序屏幕并再次显示登录表单。
<body>
{{#if loggedInUser}}
{{> navbar}}
{{> mainScreen}}
{{else}}
{{> customLogin}}
{{/if}}
</body>
Template.navbar.helpers({
loggedInUser: function () {
return Session.get('userName');
}
});
'click #logoutButton': function () {
Session.set("userName", false);
}
我发现,本地 minimongo 集合/订阅仍然在浏览器中,并且在用户注销后可以在控制台中访问。
我进行了一些搜索,但没有找到关于如何在客户端上正确清除(或停止?)这些订阅的具体解决方案。事实上,搜索“meteor 发布订阅”的前 3 次点击并没有提到注销时的停止或安全性。
关于 SO 的一个建议是保存订阅句柄......但我多次调用 subscribe,所以我似乎必须根据用户在使用期间触发的不同订阅数量来存储一个数组应用程序,然后在注销时通过它们在每个句柄上调用“停止”?
我希望有一种简单的方法可以停止所有订阅...当用户单击注销按钮时,为了安全起见,这似乎是合乎逻辑的事情。
谢谢!
【问题讨论】:
标签: meteor