流星 Session.set、Session.get

Meteor Session.set, Session.get

我需要一些帮助。我为我的应用程序配置了注册页面并且它工作正常但现在我希望用户在验证后被发送回他们在点击注册之前的确切 url。我查看了流星文档并使用了 session.set 和 session.get;它们可以工作,但仅适用于洞察应用程序的事物。似乎一旦用户单击验证 link,我就无法使用 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');
                }
            });
        }
    });
});

在这种情况下你不能使用Session,因为Session的值不在浏览器的标签之间共享。

我建议使用 localStorage 来存储 link,像这样:

 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');
        }
      });
    }
  });
});