Flowrouter with alanning:角色 - 在'userIsInRole'方法中的延迟

问题描述:

如果用户具有管理员角色,我正在使用FlowRouter和alanning:roles包来检查某个路由组的每个routeEnter。Flowrouter with alanning:角色 - 在'userIsInRole'方法中的延迟

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

谢谢 - 我想我的问题是,我必须将权限检查到模板层,我试图在routes.js检查,请参阅:[链接](https://github.com/kadirahq/流量路由器/问题/ 132) 我会尝试创建一个单独的模板与管理元素,并为他们提供checkAdmin方法。 – Raggamuffin