我正在启动一个新的Meteor - Angular2应用程序,但是我在检查路由器中的登录用户时遇到了麻烦。
这是我当前的auth-guard.service.ts
文件AdminAuthGuard
,使用implements CanActivate
:
@Injectable()
export class AdminAuthGuard implements CanActivate {
constructor(private router: Router) {}
canActivate() {
if (!Meteor.userId() || Meteor.user() != 'admin') {
this.router.navigate(['/login']);
return false;
}
return true;
}
}
问题是当页面第一次加载(或刷新)时,Meteor.user()
函数返回undefined
,我找不到任何方法在{{{}之前加载用户1}}功能。我也试过canActivate()
,但Tracker.autorun()
不能异步。此外,canActivate()
不起作用,因此我无法手动查询对象。
我该怎么办?我无法在任何地方找到解决方案!
答案 0 :(得分:0)
您可以使用Meteor.userId()
找出用户是否已登录,但我也正在努力寻找用于检查用户角色的解决方案,并且我发现您可以使用承诺或可观察等待查找用户并检查其角色,然后返回 True 或 False 条件。