2016-07-20 6 views
2

新しいMeteor-Angular2アプリケーションを開始していますが、ルータにログインしているユーザーを確認する際に問題があります。角度2が始まる前にMeteor.user()をロードしてください

@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を返し、私ができることです。

これはimplements CanActivateを使用して、AdminAuthGuardと私の現在のauth-guard.service.tsファイルですcanActivate()機能の前にユーザーをロードする方法はありません。私もTracker.autorun()で試しましたが、canActivate()は非同期ではありません。また、Meteor.users.find({})は機能しないので、オブジェクトを手動で照会することはできません。

どうすればよいですか?私はどこでも解決策を見つけることができません!

答えて

0

あなたはユーザーがログインしたりされていないことを見つけるためにMeteor.userId()を使用することができ、しかし、私はまた、ユーザーの役割を確認するための解決策を見つけるためにそれに取り組んでいると私はあなたが約束または観察可能を使用することができることを見つけますユーザーを見つけてその役割を確認してからを返します。またはの状態です。

関連する問題