【问题标题】:Sessions in MeteorMeteor 中的会话
【发布时间】:2013-03-30 10:38:53
【问题描述】:

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

目前我正在使用自定义集合来处理这个问题,但这不是一种理想的方式,因为需要手动从集合中删除过期值,这会带来额外的麻烦。

【问题讨论】:

    标签: session meteor


    【解决方案1】:

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

    要在标签之间保持数据持久性,您需要使用集合(因为这是在标签之间被动共享数据的唯一方法)- Cookie 无法工作,因为它们无法响应,因为需要将数据发送到服务器在发生变化时通知客户端。目前确实没有其他方法,因为发布/订阅方法目前只能从集合中发送数据。

    您可以将您现在的设置与您的自定义集合一起使用。您可以使用服务器端 cron 作业删除过期数据(使用 Meteor.setInterval 或 Tom Coleman's cron。

    【讨论】:

      【解决方案2】:

      为此开发了一个包: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);
      

      我试过这个包,效果很好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-12-07
        • 2016-07-21
        • 2012-05-02
        • 2017-04-01
        • 1970-01-01
        • 2014-01-17
        • 2015-11-05
        相关资源
        最近更新 更多