我使用onBeforeActions来检查用户是否已登录,他们的个人资料是否已完整或已停用。这似乎工作正常。
但现在问题是每当我直接进入应用程序内的页面时,我也会被重定向到startPage。我调试并发现了用户'虽然我已登录,但未定义。我使用的是account-fb& -tw和account-ui包。
如何确保用户已登录?我不了解这些功能的正确时间..
编辑: 在当地,我似乎总是遇到这个问题。用户经常被定义。但是在我的生产服务器上(我刚用调试器语句上传它,是的我没有testserver:/)它似乎总是未定义并转发给startPage ..
router.js:
if (Meteor.isClient) {
// only for client, else the serverside router will try to run this onBeforeAction
var onBeforeActions;
onBeforeActions = {
loginRequired: function() {
var user = Meteor.user();
if (!user) {
Router.go('startPage');
} else {
if (user && user.profile && user.profile.incomplete) {
Router.go('completeSignup');
}
if (user && user.profile && user.profile.disable) {
Router.go('profileEdit');
}
}
this.next();
}
};
Router.onBeforeAction(onBeforeActions.loginRequired);
Router.configure({
notFoundTemplate: 'notFound',
layoutTemplate: 'layoutMain',
loadingTemplate: 'loading',
trackPageView: true
});
Router.map ({});
}
答案 0 :(得分:1)
用户是否正在登录? Meteor.loggingIn()返回什么?这是我在Coffeescript中使用Iron Router的登录检查。
requireLogin = ->
if not Meteor.user()
if Meteor.loggingIn()
this.render this.loadingTemplate
else
this.render 'accessDenied'
else
this.next()
尝试这样简单的事情,然后添加你想要做的一些事情。但我很确定Meteor.loggingIn()就是你在这里寻找的。 p>
编辑:它可能在本地工作,因为没有任何延迟,所以如果你登录它可以立即运行一切。如果这是有道理的。