Meteor Session.set,Session.get

时间:2016-11-28 23:48:58

标签: javascript meteor iron-router

我需要一些帮助。我为我的应用程序配置了注册页面,但它运行正常,但现在我希望用户在验证后,在点击注册之前将其发送回他们所在的确切网址。我查看了meteor文档并使用了session.set和session.get;他们的工作,但只是对应用程序的洞察力。一旦用户点击验证链接,我就无法使用session.get返回存储在session.set中的确切网页。相关代码如下 - 任何见解都将受到赞赏 - 提前感谢!

Template.applyPageOne.events({
    'click .jsCandidateSignupRequest': function (event) {
        event.preventDefault();
        var applyUrlSet = window.location.href;
        Session.set('applyUrlSession', applyUrlSet);
        Router.go('signupCandidate');
    }
});

Router.map(function () {
    this.route('verifyEmail', {
        controller: 'AccountController',
        path: '/verify-email/:token',
        action: 'verifyEmail'
    });
    AccountController = RouteController.extend({
        verifyEmail: function () {
            Accounts.verifyEmail(this.params.token, function () {
                if(Roles.userIsInRole(Meteor.user(), ['candidate'])) {
                    var applyUrlGet = Session.get('applyUrlSession');
                    window.open(applyUrlGet,'_self', false);
                }else {
                    Router.go('dashboard');
                }
            });
        }
    });
});

1 个答案:

答案 0 :(得分:1)

在这种情况下,您无法使用Session,因为在浏览器的标签页之间不会共享Session的值。

我建议使用localStorage来存储链接,如下所示:

 Template.applyPageOne.events({
  'click .jsCandidateSignupRequest': function(event) {
    event.preventDefault();
    var applyUrlSet = window.location.href;
    localStorage.setItem('applyUrlSession', applyUrlSet);
    Router.go('signupCandidate');
  }
});

Router.map(function() {
  this.route('verifyEmail', {
    controller: 'AccountController',
    path: '/verify-email/:token',
    action: 'verifyEmail'
  });
  AccountController = RouteController.extend({
    verifyEmail: function() {
      Accounts.verifyEmail(this.params.token, function() {
        if (Roles.userIsInRole(Meteor.user(), ['candidate'])) {
          var applyUrlGet = localStorage.getItem('applyUrlSession');
          localStorage.removeItem('applyUrlSession');
          window.open(applyUrlGet, '_self', false);
        } else {
          Router.go('dashboard');
        }
      });
    }
  });
});