2016-05-29 34 views
0

当流星用户注销时,我可以访问www.foo.com/usernameA,这会带来usernameA页面与所有的个人资料信息。当我为www.foo.com/usernameB执行此操作时,会发生同样的情况。所有这些都很好。当我用用户登录流星账户并尝试输入用户名相同的地址时,我会不断被路由到当前登录的用户配置文件页面。当前登录的用户不断劫持Router.current()。params.username并始终将该参数作为当前参数。当流星用户登录时Iron Router不会将Router.current().parameters.username路由到不同的配置文件

这里是我的代码的基础:

routes.js

Router.route('/:username', { 
template: 'userPubProfile', 
onBeforeAction: function(){ 
var profileUserExists = Meteor.users.find({"profile.user-url" : 
Router.current().params.username}).count(); 

    if (profileUserExists == 0) { 
    this.render('404'); 
    } 
    else { 
    this.next(); 
    } 
} 
}); 

userPubProfile.js

Template.userPubProfile.helpers({ 
    'userFirstName' : function(){ 
    var getUser = Meteor.users.findOne({"profile.user-url" : 
Router.current().params.username}); 
return getUser.profile['first-name']; 
} 
}); 

我的问题: 如何使路由工作时相同用户在尝试使用/:username参数连接到路由器时已登录或注销?

+0

在返回之前在你的助手中尝试'console.log'并观察你得到的结果。 –

+0

我做了console.log。问题是......当流星用户登录后,我自动输入的任何网址都会被重定向到登录的用户名。例如:如果我登录并且用户配置文件是www.website.com/ john,然后我输入www.website.com/bob ....路由器自动将bob重定向到www.website.com/john ...为什么登录时重定向? – jremi

回答

1

我想感谢大家。我能解决这个问题。这是由于我在构建我的/:用户名路由以收集用户名路由器参数之前插入的旧线路。最后我发现,我的Accounts.onLogin内()我有一个呼叫正在做......

var getUserUrl = Meteor.user().profile['user-url']; 
    Router.go('/' + getUserUrl); 

我不得不简单地删除这些行,现在一切是正确的!谢谢!

相关问题