1
私は、ユーザーが要求がログアウト手順中に送信されていない
<a class="dropdown-item" (click)=authService.logout() href="/welcome">Log out</a>
ログアウト]メニュー項目をクリックすると単純なAngular2アプリを、持っている、AuthenticationServicesのlogout()
方法は
logout() {
alert('loging out');
this.authHttp.post(this.endpoint_url + '/auth/logout','').map(res => {
if(res.status == 204) alert('logout successful');
else alert('logout failed');
});
this.currentUser = null;
localStorage.removeItem('token');
}
を実行問題が一部であります
this.authHttp.post(this.endpoint_url + '/auth/logout','').map(res => {
if(res.status == 204) alert('logout successful');
else alert('logout failed');
});
は実行されていないようです。 authHttp
(angular2-jwt)で保護されたAPIにアクセスすると、アプリケーションの他の部分で問題なく動作します。
最初の警告「ログアウト」が表示され、ユーザーはログアウトして「/ welcome」にリダイレクトされ、APIのプライベート部分にアクセスできなくなります。ただし、ブラウザーやサーバーログに「/ auth/logout」を要求することはありません。
canActivate() {
//loggedIn() {!(this.currentUser == null);}
if (!this.auth.loggedIn()) {
this.router.navigate(['/welcome']);
return false;
}
return true;
}
はい、それは他の回答(クリックイベントのキャンセル)とともに(部分的に)役立ちました。今度は実行されますが、トークンが削除された後に失敗します。 – wondra
ああ後でトークンを削除しますか?更新された回答を確認してください。あなたres.status内のトークンを削除することができます== 204またはサブスクリプション内の好きなところ – echonax
他の問題は、他のコンポーネントの別のエラーのために動作しているように見えた誤って構成されたjwtと組み合わせて、サーバー側にあった)。元の問題のすべては 'subscribe'を使用していませんでした。また、イベントをキャンセルしないでください。 – wondra