如何检查网页是否返回401?

时间:2018-11-19 20:00:08

标签: angular jwt

我正在实现一项服务,而该服务需要JWT令牌才能访问。

当JWT令牌到期时,页面本身将显示以下内容。

<oauth>
<error_description>
Access token expired: <token_value>
</error_description>
<error>invalid_token</error>
</oauth> 

我要路由的是

{ path: '', component: HomeComponent }

示例:

当我启动页面时(本地-https://localhost:8080/) 我会得到令牌过期错误。我想将401捕获为页面加载。

那我如何检查当前页面是否返回401?例如,假设用户刷新页面,如何获得401响应,而不是在网页本身中显示。

1 个答案:

答案 0 :(得分:0)

我不确定我是否了解所有上下文,也不清楚是否可以从cookie中读取,如果可以读取cookie,则在HomeComponent中,您也许可以使用一种方法来检查cookie中的令牌在调用需要令牌的服务之前已过期(因此您将不会获得401)

testling2

如果您需要的只是从服务器处理401,那么您可能需要实现和上面上面的注释中建议的拦截器,类似...

 import { CookieService } from 'ngx-cookie';
 @Component({
    selector: 'home-component',
    templateUrl: './app.component.html',
    styleUrls: ['./app.component.scss']
 })
 export class HomeComponent {
  tokenValid = true;
  constructor(public cookie: CookieService) {}

  ngOnInit(){
   this.tokenValid = this.isAccessTokenValid();
   if(this.tokenValid) {
     //call a service that uses the token
   }else {
     //do whatever
   }

  }

  isAccessTokenValid(): boolean {
   const acc_token = this.cookieService.get('token_in_cookie'); // use your key
   if (!!acc_token) {
     if (jwtService.isTokenExpired(acc_token)) {
       return false;
     }
     return true;
   } else {
   return false;
  }
 }

}

希望这会有所帮助!