在Angular 2启动之前加载Meteor.user()

时间:2016-07-20 21:16:01

标签: meteor angular

我正在启动一个新的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()不起作用,因此我无法手动查询对象。

我该怎么办?我无法在任何地方找到解决方案!

1 个答案:

答案 0 :(得分:0)

您可以使用Meteor.userId()找出用户是否已登录,但我也正在努力寻找用于检查用户角色的解决方案,并且我发现您可以使用承诺可观察等待查找用户并检查其角色,然后返回 True False 条件。