【发布时间】: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({}) 不起作用,所以我无法手动查询该对象。
我能做什么?我在任何地方都找不到解决方案!
【问题讨论】: