【发布时间】:2016-01-12 19:00:29
【问题描述】:
我正在编写我的应用程序的一部分,它要求用户具有“操作员”角色。
我正在 FlowRouter 的 triggersEnter 函数中检查这一点。我希望向没有操作员角色的用户显示受限访问页面。
我使用 FlowRouter、Roles 和 brettle:accounts-deluxe,每个访客都会以访客身份自动登录。
这是我的代码,routes.js:
FlowRouter.route('/switchboard', {
name: 'switchboard',
triggersEnter: [function (context, redirect, stop) {
if (!Roles.userIsInRole(Meteor.userId(), ['operator'])) {
BlazeLayout.render('main', {
content: 'restrictedAccess'
});
stop();
}
}],
action: function () {
BlazeLayout.render('main', {
content: 'switchboard'
});
}
});
在 localhost 上一切正常,但是当应用程序使用 mup 在服务器上部署时,triggersEnter 运行时,Meteor.user() 是 undefined(Meteor.userId() 返回正常) ,而Roles.userIsInRole 调用的结果是false,尽管在数据库中查看很明显用户具有操作员角色。
我认为在运行 triggersEnter 时用户订阅不可用,这意味着用户集合未在客户端上发布。我有这种感觉,因为如果我通过单击链接访问路由,则 userIsInRole 结果是可以的,但是如果我刷新页面,我会遇到所描述的问题。 我想知道为什么这种情况只发生在服务器上,我该如何解决。
【问题讨论】:
标签: meteor flow-router