我正在实现一项服务,而该服务需要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响应,而不是在网页本身中显示。
答案 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;
}
}
}
希望这会有所帮助!