如果用户具有管理员角色,我正在使用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页面。当我点击后退按钮时,似乎角色已初始化,我实际上可以看到管理区域。
如何在初始化管理员角色时避免这种延迟?
感谢您的帮助!
莫夫
答案 0 :(得分:1)
用户对象需要几个周期才能完全加载,因此如果您立即检查它,您将无法访问所有用户的属性。最好在等待加载用户对象时显示微调器。您可以创建对用户的订阅,该订阅仅包含您真正需要的那些密钥,并等待该订阅准备就绪。