Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 注销过程中未发送请求_Javascript_Angular_Httprequest_Jwt_Rxjs - Fatal编程技术网

Javascript 注销过程中未发送请求

Javascript 注销过程中未发送请求,javascript,angular,httprequest,jwt,rxjs,Javascript,Angular,Httprequest,Jwt,Rxjs,我有一个简单的Angular2应用程序,如果用户点击 <a class="dropdown-item" (click)=authService.logout() href="/welcome">Log out</a> 问题在于这一部分 this.authHttp.post(this.endpoint_url + '/auth/logout','').map(res => { if(res.status == 204) alert('logout s

我有一个简单的Angular2应用程序,如果用户点击

<a class="dropdown-item" (click)=authService.logout() href="/welcome">Log out</a>
问题在于这一部分

  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可以在应用程序的其他部分正常工作,没有任何问题
第一个“注销”警报弹出,用户已注销并重定向到“/欢迎”,无法再访问API的私有部分。但是,在浏览器或服务器日志中都没有“/auth/logout”请求


还有一个
AuthGuard
服务重定向任何未登录的用户:

canActivate() {
//loggedIn() {!(this.currentUser == null);}
if (!this.auth.loggedIn()) {
  this.router.navigate(['/welcome']);
  return false;
}
return true;
}

您需要订阅可观察对象,以便“激发”它们


如果您需要在注销成功后删除令牌,您需要在函数回调(
subscribe
)中执行此操作。

是的,它有帮助(部分),还有其他答案(取消单击事件)。现在它执行了,但是在令牌被删除(因此失败)之后。哦,你想在之后删除令牌吗?检查我的最新答案。您可以删除res.status==204内的令牌,也可以删除订阅服务器内任何您喜欢的令牌。如果另一个问题出现在服务器端,再加上错误配置的jwt(由于其他组件中的另一个错误,jwt似乎可以正常工作)。原始问题的全部原因不是使用
subscribe
。还有,我不应该取消这个活动。@wondra啊,很高兴你弄明白了。
canActivate() {
//loggedIn() {!(this.currentUser == null);}
if (!this.auth.loggedIn()) {
  this.router.navigate(['/welcome']);
  return false;
}
return true;
}
this.authHttp.post(this.endpoint_url + '/auth/logout','').subscribe((res)=>{
    if(res.status == 204){  
     alert('logout successful');
     this.currentUser = null;
     localStorage.removeItem('token');
   }else {alert('logout failed');}           
});