带有alanning的Flowrouter:角色 - 'userIsInRole'方法的延迟

时间:2016-04-29 19:04:14

标签: javascript meteor flow-router

如果用户具有管理员角色,我正在使用FlowRouter和alanning:roles包来检查某个路由组的每个routeEnter。

let adminRoutes = FlowRouter.group({
    name: "adminRoutes",
    triggersEnter: [checkAdmin]
});

checkAdmin = () => {
console.log(Roles.userIsInRole(Meteor.userId(), 'admin')); // false
if (! Roles.userIsInRole(Meteor.userId(), 'admin')) {
    console.log(Roles.userIsInRole(Meteor.userId(), 'admin')); //false
    FlowRouter.redirect('/notFound');
}

};

当我以管理员身份登录时,控制台日志首先为false,我将被重定向到notFound页面。当我点击后退按钮时,似乎角色已初始化,我实际上可以看到管理区域。

如何在初始化管理员角色时避免这种延迟?

感谢您的帮助!

莫夫

1 个答案:

答案 0 :(得分:1)

用户对象需要几个周期才能完全加载,因此如果您立即检查它,您将无法访问所有用户的属性。最好在等待加载用户对象时显示微调器。您可以创建对用户的订阅,该订阅仅包含您真正需要的那些密钥,并等待该订阅准备就绪。