【发布时间】:2017-03-19 18:20:01
【问题描述】:
我在使用流星、角度以及包 ui-router 和 alanning:roles 开发应用程序时遇到了问题。在组件内部,我不希望特定路由仅对某些角色下的登录用户可用,因此我配置了具有以下功能的组件:
function config($stateProvider) {
'ngInject';
$stateProvider.state('customers', {
url: '/customers',
template: '<customer-list></customer-list>',
resolve: {
currentUser($q) {
const userId = Meteor.userId();
if (userId && Roles.userIsInRole(userId, ['admin'])) {
console.log('customers.USER_REJECTED');
return $q.reject('AUTH_REQUIRED');
} else {
console.log('customers.USER_ALLOWED');
return $q.resolve();
}
}
}
})
}
它工作得很好,但是当我刷新页面时,如果用户按照我已经实现的逻辑,则不允许访问该路由,即使他实际上已登录。如果然后我手动转到 /客户,仍然不允许用户进入,但是如果我转到唯一要求登录的其他网址,则允许用户进入。我已经检查过,当我刷新页面时,Meteor.user() 返回 undefined,所以我想这就是检查角色返回 false 的原因。我已经检查了这个社区中提出的几个解决方案,但我无法使它们中的任何一个工作。你能帮我一把吗?
非常感谢。
【问题讨论】:
标签: angularjs meteor angular-ui-router roles