如何为用户会话超时设置回调

时间:2013-07-24 11:07:51

标签: meteor

当用户登录Meteor应用程序时,会创建会话。用户关闭浏览器后会话到期需要多长时间?

即使浏览器未关闭,会话是否会过期?

是否有可能对会话结束做出反应?例如,通过调用回调。

3 个答案:

答案 0 :(得分:2)

我正在寻找 meteorjs 应用的陈旧会话 / 会话超时功能,并在寻找合适的套餐时遇到了这个问题使用

不幸的是,Andrew提到的 meteor-user-status 包似乎没有超时。

我继续看,发现了其他一些包,但是无法让它们为我工作 - 所以我写了一个非常小而简单的包,受到其他人的启发,正是做了什么提问者在这里要求,即强制用户在一段规定的不活动时间后退出(无论浏览器是否打开)。

然而,它不提供回调(因为它是强制注销的服务器),但这可能是通过查看Meteor.userId()的Dep.autorun来完成的。

您可以输入

进行尝试
mrt add stale-session

并在此处查找有关如何工作以及如何配置的详细信息:

https://atmosphere.meteor.com/package/stale-session

并且代码在这里开源:

https://github.com/lindleycb/meteor-stale-session

答案 1 :(得分:0)

使用我创建的用于跟踪用户状态的程序包,包括整体和几个不同的浏览器会话:

  

https://github.com/mizzao/meteor-user-status

通过这种方式,您可以对正在关闭的会话和用户注销的会话做出反应(请参阅自述文件)。我已经为登录用户实现了它,但如果你想跟踪匿名用户,你可以做类似的事情。

答案 2 :(得分:0)

我一直在使用zuuk:stale-session我最初也希望它有一个回调,但我用一个优雅的解决方案(恕我直言)解决了它。

我的应用有一个登录模板,可以在if (! Meteor.user())为真时呈现。它过去只运行this.render('login')模板,但它仍然保留了已登录的菜单结构。所以,我切换到了Router.go('login'),它有自己的layoutTemplate。所以现在当不活动触发过时会话删除用户的令牌时,页面转到/ login而不是仅仅在任何路由过时的情况下呈现登录模板。

这是我在router.js中的代码:

/** [requireLogin - make sure pay area is walled off with registration] */
var requireLogin = function() {
  if (! Meteor.user()) {
    // If user is not logged in render landingpage
    //this.render('login');
    Router.go('login');
    this.next();
  } else {
    //if user is logged in render whatever route was requested
    this.next();
  }
}

/**
 * Before any routing run the requireLogin function.
 * Except in the case of "landingpage".
 * Note that you can add more pages in the exceptions if you want. (e.g. About, Faq, contact...)
 */
Router.onBeforeAction(requireLogin, {
   except:['terms','privacy','about','features','home']
});