1
我有简单化Angular2应用程序,如果用户点击请求
<a class="dropdown-item" (click)=authService.logout() href="/welcome">Log out</a>
退出菜单项,其中,该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”的请求。
还有AuthGuard
服务重定向任何未记录用户:
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