【问题标题】:Load Meteor.user() before Angular 2 starts在 Angular 2 启动之前加载 Meteor.user()
【发布时间】:2016-11-24 06:20:11
【问题描述】:

我正在启动一个新的 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,我在canActivate() 函数之前找不到任何加载用户的方法。我也试过Tracker.autorun(),但canActivate() 不能是异步的。另外,Meteor.users.find({}) 不起作用,所以我无法手动查询该对象。

我能做什么?我在任何地方都找不到解决方案!

【问题讨论】:

    标签: meteor angular


    【解决方案1】:

    您可以使用Meteor.userId() 找出用​​户是否登录,但我也在努力寻找检查用户角色的解决方案,我发现您可以使用 PromiseObservable 等待并找到用户并检查其角色,然后返回 TrueFalse 条件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-27
      • 1970-01-01
      • 2018-02-08
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 2017-05-13
      • 1970-01-01
      相关资源
      最近更新 更多