如何在Meteor注销时删除会话变量?

时间:2015-03-01 19:59:58

标签: session meteor

我为用户设置了会话变量,用于跟踪和服务器的小更改,当用户注销并且新用户在不关闭浏览器的情况下登录时,会话变量仍处于活动状态。

示例Session.set(“变量”,变量)  Session.get( “可变的”)

我想我正在寻找的是如何在用户注销时强制重新加载页面。

3 个答案:

答案 0 :(得分:7)

我有一个简单的注销模板,可以加载一个微调器:

<template name="logout">
  {{> spinner}} <!-- using sacha:spin package ->
</template>

然后是一个执行实际注销的助手以及所有清理工作。

Template.logout.rendered = function(){
  Meteor.logout(function(err){
    if ( err ){
      Alerts.add('Error logging out: '+err); // using mrt:bootstrap-alerts
    } else {
      // your cleanup code here
      Object.keys(Session.keys).forEach(function(key){
        Session.set(key, undefined);
      });
      Session.keys = {}; // remove session keys
      Router.go('/');  // redirect to the home page or elsewhere using iron:router
    }
  });
}

另见how-do-i-delete-or-remove-session-variables

答案 1 :(得分:1)

Here是一个添加客户端onLogin和onLogout检测和回调的软件包(我没试过,但看起来很简单)。如果您想在用户注销时清除会话值...

Accounts.onLogout(function() {
  Session.set('variable', null);
});

强制页面&#34;重新加载&#34;并不是一种非常流行的做事方式。如果您的页面根据会话值是否存在而呈现,则只需清除该值,页面将对您想要的状态做出反应。

答案 2 :(得分:0)

for (var key in Session.keys) {
    Session.set(key, false);
}
Session.clear();