如何安全地注销并清除所有订阅?

2024-01-12

我实现了自己的登录系统,因为我使用第三方 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 ,所以看来我必须存储一个数组,具体取决于用户在使用应用程序期间触发了多少个不同的订阅,并且然后在注销时通过它们在每个句柄上调用“停止”?

我希望有一种简单的方法来停止所有订阅......当用户单击注销按钮时,为了安全起见,这似乎是合乎逻辑的事情。

Thanks!


你能不能不使用.stop()集合上的函数?

var subscription = Meteor.subscribe("info");

//on logout

subscription.stop();

根据docs http://docs.meteor.com/#/full/meteor_subscribe:

停止() 取消订阅。这通常会导致服务器指示客户端从客户端缓存中删除订阅的数据。


Updated:也许看看这个包:替补经理 https://github.com/meteorhacks/subs-manager。看起来他们也许能够做你想做的事,特别是从他们的自述文件中:

清除订阅

在某些情况下,我们需要清除缓存的所有订阅。所以,我们可以这样做。

var subs = new SubsManager();

// later in some other place
subs.clear();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何安全地注销并清除所有订阅? 的相关文章

  • Meteor WebSocket 与 nginx 握手错误 400

    我设法在我的基础设施 Webfactions 上部署 Meteor 该应用程序似乎工作正常 但当我的应用程序启动时 我在浏览器控制台中收到以下错误 WebSocket connection to ws websocket failed Er
  • 什么是 __meteor_bootstrap__?

    我刚刚开始使用 Meteor 并致力于现有的项目 我遇到了其中一个软件包 observatory apollo 的问题 该软件包具有以下行 meteor bootstrap app use Observatory logger TLog u
  • Meteor:未捕获 RangeError:超出最大调用堆栈大小

    我对流星很陌生 我正在做简单的应用程序 这是我遇到的问题 Template newFeedForm events submit new feed form event event preventDefault const target ev
  • Meteor js:在用户集合中创建索引

    我创建一个带有全名字段的用户集合 即 Jose Osorio Jose castro John smith Maria Smith 我需要创建一个搜索栏来按姓名查找注册用户 IE 在搜索栏中写下 jose 我想看到何塞 奥索里奥和何塞 卡斯
  • 流星合并同一集合的光标

    在我的社交应用程序 如 FB 中 我有一个奇怪的需要 将同一集合用户的两个光标合并到一个发布中 Meteor 服务器打印此错误 发布函数为集合用户返回了多个游标 也许这在 Meteor 0 7 2 中无法完成 也许我的方法是错误的 但我发现
  • 部署到 Digital Ocean 的 Meteor 应用卡在 100% CPU 和 OOM

    我有一个使用 Meteor Up 部署到 Digital Ocean 的 Meteor 0 8 0 应用程序 该应用程序一直卡在 100 CPU 只是因内存不足而崩溃 然后以 100 CPU 再次启动 过去24小时就这样卡住了 奇怪的是没有
  • 发现 Meteor - mrt 添加引导程序 - 安装错误

    我刚刚开始发现流星教程 当我尝试 mrt add bootstrap 我收到以下错误 usr local lib node modules meteorite lib project js 225 throw Package named p
  • 如何在带有流星的车把助手中使用多个参数?

    我正在尝试使用 Meteor 创建一个自定义助手 以下是此处的文档 https github com meteor meteor wiki Handlebars https github com meteor meteor wiki Han
  • 如何更新 Meteor Collection/minimongo 中一个文档的数组中多个对象的属性?

    我的问题几乎与此重复question https stackoverflow com questions 36026517 how to update multiple array objects in mongodb 不同之处在于我在 M
  • Meteor 文件上传不工作

    我已将包 cfs standard packages 和 cfs filesystem 添加到我的 Meteor 项目中 我想使用带有此输入的表单为我的博客上传精选图像 div class form group div
  • Nginx 背后的多个 Meteor 站点

    这个问题与this https stackoverflow com questions 10936242 how can i correct the meteor base url in a nginx reverse proxy conf
  • Iron 路由器中的多个订阅

    我一直在开发一个使用评论功能的应用程序 这导致必须订阅发表评论的集合和评论集合本身 现在看起来像这样
  • 如何在流星模板中设置日期格式

    我需要以 mm dd yyyy 格式显示数据库中的日期 因为它以 ISO 格式保存在mongodb如何在模板中转换它 这是我的代码 Template templatename vname function return Posts find
  • Meteor 中的触摸事件

    我开始使用 Meteor 做的第一件事是开始为手机 平板电脑编写基于触摸的 Web 应用程序 以下是重现问题的方法 第一步 创建一个空白项目 meteor create touch example cd touch example mete
  • Meteor 抛出 throwIfSelectorIsNotId 异常

    运行某些代码时 Meteor 会抛出 throwIfSelectorIsNotId 异常 我有两个客户端运行相同的代码 当第二个客户端运行相同的代码时会引发异常 无法弄清楚这个异常的含义以及抛出的原因 希望有人能够解释一下 对于客户端上的某
  • Meteor 发布错误 - 发布函数返回非游标数组

    我有这个出版物 Meteor publish temsInThisCompetition function id var teams return Competitions find id fetch map function doc fo
  • 带有 mrt 的流星 - 铁:路由器:没有这样的包

    我在学meteor 0 8 3并尝试使用一些基本的路由设置铁路由器 https github com EventedMind iron router My smart json包含 packages iron router git http
  • 在流星收集加载时显示加载程序

    我有一个模板 task list 看起来像这样 each tasks gt task each Template task list tasks返回一个集合 在用户界面中 加载似乎需要一些时间 当集合正在加载时 我想显示一个加载指示器 关于
  • 在 Meteor 中运行示例的问题

    我正在测试 Meteor 示例 这是我运行时看到的meteor在待办事项示例中 Unexpected mongo exit code 100 Restarting Unexpected mongo exit code 100 Restart
  • 流星内存不足

    我正在使用流星来制作报废引擎 我必须执行一个 HTTP GET 请求 这会向我发送一个 xml 但这个 xml 大于 400 ko 我得到一个异常 内存不足 result Meteor http get http SomeUrl com 致

随机推荐