当用户登录Meteor应用程序时,会创建会话。用户关闭浏览器后会话到期需要多长时间?
即使浏览器未关闭,会话是否会过期?
是否有可能对会话结束做出反应?例如,通过调用回调。
答案 0 :(得分:2)
我正在寻找 meteorjs 应用的陈旧会话 / 会话超时功能,并在寻找合适的套餐时遇到了这个问题使用
不幸的是,Andrew提到的 meteor-user-status 包似乎没有超时。
我继续看,发现了其他一些包,但是无法让它们为我工作 - 所以我写了一个非常小而简单的包,受到其他人的启发,正是做了什么提问者在这里要求,即强制用户在一段规定的不活动时间后退出(无论浏览器是否打开)。
然而,它不提供回调(因为它是强制注销的服务器),但这可能是通过查看Meteor.userId()的Dep.autorun来完成的。
您可以输入
进行尝试mrt add stale-session
并在此处查找有关如何工作以及如何配置的详细信息:
https://atmosphere.meteor.com/package/stale-session
并且代码在这里开源:
答案 1 :(得分:0)
使用我创建的用于跟踪用户状态的程序包,包括整体和几个不同的浏览器会话:
通过这种方式,您可以对正在关闭的会话和用户注销的会话做出反应(请参阅自述文件)。我已经为登录用户实现了它,但如果你想跟踪匿名用户,你可以做类似的事情。
答案 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']
});