页面刷新时 Meteor 会话是否会重置?
出于某种原因,我认为他们没有这样做,但似乎他们这样做了。有没有办法让他们坚持下去?
如果不是,那么最好的解决方案是什么?
我想允许相同的数据显示用户是否刷新(此数据特定于用户),即使他们尚未注册。
页面刷新时 Meteor 会话是否会重置?
出于某种原因,我认为他们没有这样做,但似乎他们这样做了。有没有办法让他们坚持下去?
如果不是,那么最好的解决方案是什么?
我想允许相同的数据显示用户是否刷新(此数据特定于用户),即使他们尚未注册。
实际上,您可以做的是创建 Session 的“子类”,在调用 set() 时将值存储在 Amplify 的存储中。您将自动继承 Session 的所有反应属性。这是代码,它对我有用:
SessionAmplify = _.extend({}, Session, {
keys: _.object(_.map(amplify.store(), function(value, key) {
return [key, JSON.stringify(value)]
})),
set: function (key, value) {
Session.set.apply(this, arguments);
amplify.store(key, value);
},
});
只需将所有 Session.set/get 调用替换为 SessionAmplify.set/get 调用即可。调用 set() 时,会调用父 Session 方法,以及 amplify.store()。当“子类”第一次创建时,它会在其键中加载 amplify 存储中的所有内容,以便可以使用 get() 立即检索它们。
您可以在此处测试排行榜示例的工作变体:https ://github.com/sebastienbarre/meteor-leaderboard
这是一个老问题,但它是搜索“流星会话管理器”的第二次点击,所以我认为添加包 u2622:persistent-session 完美地解决了这个问题很重要。
来自文档: https ://atmospherejs.com/u2622/persistent-session
安装
流星添加u2622:持久会话
而已!现在,您可以使用 Session.setPersistent 设置刷新后将保存的会话变量。
如果您愿意,您也可以让 Session.set 执行此操作。请参阅下面的选项部分。
我刚刚为 Atmosphere 创建了UserSession包,它基本上是一个基于用户的持久化Session
.
所以我认为最好的方法是使用 amplifyJS 包。
这是某人的要点,显示了他们如何使用它: https ://gist.github.com/2865146
这Session
是一个全局键值存储,一个反应式的。
http://docs.meteor.com/#session
Session 在客户端上提供了一个全局对象,您可以使用它来存储任意一组键值对。使用它来存储列表中当前选定项目之类的内容。
Session 的特别之处在于它是响应式的。如果您从模板内部调用 Session.get("currentList"),则每当调用 Session.set("currentList", x) 时,模板将自动重新呈现。
如果您必须在客户端中保留某些内容,localstorage
如果您关心较旧的浏览器,则可以使用浏览器或 cookie。