使用“浏览器刷新/重新加载”或F5刷新页面时,拦截器未执行

时间:2019-04-18 15:55:34

标签: angular spring-security angular7 jwt-auth

我目前正在学习角度7,但是我正面临和遇到问题,希望您能帮助您了解发生了什么。 我正在使用JWT Authentication(Spring Boot Security),每次单击时,都会在将请求发送到服务器之前调用我的拦截器来设置令牌。 当我使用浏览器后退/前进时,一切正常。 但是,如果单击“浏览器刷新”,则不会调用拦截器,而我会收到Whitelabel错误页面。 我的问题是: 1-为什么刷新不调用我的拦截器? 2-你知道如何解决吗?

import { Injectable } from '@angular/core';
import { HttpInterceptor, HttpRequest, HttpHandler, HttpErrorResponse, 
HttpEvent } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
import { Router } from '@angular/router';
import { TokenStorage } from './public/portal/token.storage';
import 'rxjs/add/operator/do';

 const TOKEN_HEADER_KEY = 'Authorization';
@Injectable()
export class Interceptor implements HttpInterceptor {
constructor(private token: TokenStorage, private router: Router) {
}
intercept(req: HttpRequest<any>, next: HttpHandler): 
Observable<HttpEvent<any>> {
let authReq = req;
if (this.token.getToken() != null) {authReq = req.clone({ 
    headers:req.headers.set(TOKEN_HEADER_KEY, 'Bearer ' + 
    this.token.getToken()) });
}
return next.handle(authReq).do(
  (err: any) => {

    if (err instanceof HttpErrorResponse) {
      if (err.status === 401) {
        this.router.navigate(['login']);
      }
    }
    console.log(err.status);
  }
);
}
}

感谢您对我的帮助

0 个答案:

没有答案