我需要一些帮助。我为我的应用程序配置了注册页面,但它运行正常,但现在我希望用户在验证后,在点击注册之前将其发送回他们所在的确切网址。我查看了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');
}
});
}
});
});
答案 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');
}
});
}
});
});