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页面。当我点击后退按钮时,似乎角色已初始化,我实际上可以看到管理区域。
如何避免这种延迟初始化管理角色?
感谢您的帮助!
莫夫
答
用户对象需要几个周期来完全加载,所以如果你立即检查它,你将不能访问到所有用户的属性。最好在等待用户对象加载时显示微调器。您可以为用户创建订阅,仅包含您真正需要的那些密钥,并等待该订阅准备就绪。
谢谢 - 我想我的问题是,我必须将权限检查到模板层,我试图在routes.js检查,请参阅:[链接](https://github.com/kadirahq/流量路由器/问题/ 132) 我会尝试创建一个单独的模板与管理元素,并为他们提供checkAdmin方法。 – Raggamuffin