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

Flowrouter with alanning:Roles - Delay in 'userIsInRole' Method

本文关键字:方法 userIsInRole 延迟 alanning Flowrouter 角色 带有      更新时间:2023-09-26

我使用带有alanning:roles包的FlowRouter来检查某个路由组的每个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页面。当我按下后退按钮时,角色似乎已经初始化,我实际上可以看到管理区域。

如何避免初始化管理员角色的延迟?

谢谢你的帮助!

Muff

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