0
私は自分のアプリケーションにあるいくつかのルートでガードを実装しようとしています。だから基本的に私のapi(バックエンドは速達で提供されています)にhttpリクエストを送信したい、私のセッションが存在する場合、ユーザーはルートにアクセスすることができます。http要求のあるAuthガードがAngular 2で動作しない
私はそれをやっている人の例をたくさん見ましたが、私はそれらのすべてを試しましたが、何も働いていませんでした。私はクロムの開発ツールをチェックしたところ、エラーはなく、要求が "保留中"の状態にとどまっていることがわかりました。
どうしたのですか?私がhttp要求をしなければ、それは完全に動作します。
私のauth-guard.service.ts
canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
return this.authService.isAuthenticated();
}
そして、これはここで私のauth.service.ts
public isAuthenticated() : Observable<boolean> | boolean {
let router: Router = this.router;
let obs;
try {
obs = this.http.get('/api/session')
.map(result => result.json())
.map(resultJson => (resultJson && resultJson.success));
} catch (err) {
obs = Observable.of(false);
}
return obs
.map(success => {
// navigate to login page
if (!success)
router.navigate(['/login']);
return success;
});
}
あるとは私のAPI関数である
exports.getSession = function(req, res) {
return (req.session.passport)? {success: true}: {success: false};
}
あなたが保留中の要求を持っている場合、それはおそらく意味、そのエラーが私の角度コードから来ていなかったので...私はちょうど私がこのように、私のAPIでデータを返された方法を変更する必要がありました[OK]を要求が終了するとAngularクライアントコードが実行されるため、バックエンドの問題が発生します。 –
あなたは正しかった!エラーは私のバックエンドから来た、ありがとう! – Manu