流星中的会话

时间:2013-04-08 11:08:44

标签: session meteor

经过研究后,似乎在刷新页面或在新选项卡中打开网站后重置了Meteor Sessions,即它们不是通常的服务器端会话,而是客户端的全局javascript变量。有些人建议使用AmplifyJS,但我不确定它是否会像其他框架/语言中的常规会话那样工作,而且它也是第三方库,因此有没有在Meteor中使用会话的任何常规方法,即保持用户 - 服务器上的具体数据?

此时我正在使用自定义集合来处理它,但这不是一种理想的方法,因为需要手动删除Collection中的过期值,这会带来额外的麻烦。

2 个答案:

答案 0 :(得分:4)

是的,这是正确的。尽管名称Session不像cookie,但只是存储在hashmap中的变量的反应形式

为了保持数据库的持久性,您需要使用集合(因为这是跨选项卡反应性共享数据的唯一方法) - Cookie无法工作,因为无需将数据发送到服务器在发生更改时通知客户端。目前真的不会有另一种方式,因为发布/订阅方法目前只能从集合中发送数据。

您可以使用自定义集合中的设置。您可以使用服务器端cron作业删除过期数据(使用Meteor.setIntervalTom Coleman's cron

答案 1 :(得分:0)

有一个专门为此开发的软件包:https://atmospherejs.com/u2622/persistent-session

安装后,您可以使用以下功能设置持久性会话:

//store a persistent session variable which is stored across templates
Session.setPersistent(key, value);

//same as above, but automatically deletes session data when user logs out
Session.setAuth(key, value);

我尝试过这个包,它就像魅力一样。