检查的令牌不是 JWT

时间:2021-07-28 18:43:53

标签: angular oauth jwt

我正在使用 Angular 9 和 Spring Boot 处理我的项目。 我正在创建登录部分。我使用 Oauth0 正确创建了一个 JWT。 正确性通过邮递员验证,我检查 JWT 是否在 Http 响应的标头中,即。

问题出在角度上。我正在使用 npm 包 oauth0/angular-jwt。它在图像中给了我这个错误:Error

我想要得到的代码如下:

Login.component.ts

public employeeLogin = () : void =>
{
  console.log("BEFORE SUB");
  this.subscriptions.push
  (
    this.authService.login(this.loginCredentials.value).subscribe
    (
      (response : HttpResponse<any>) =>
      {
        console.log("YEAAAAH");
        console.log(response.headers);
        const token = response.headers.get(HeaderType.JWT_TOKEN);
        this.authService.saveToken(token);
        this.authService.addUserToLocalCache(response.body);
        // this.router.navigate(['amministrazione/']);
      },
      (errorResponse : HttpErrorResponse) =>
      {
        console.log(errorResponse);
      }
    )
  );
}

auth.service.ts

 import { JwtHelperService } from '@auth0/angular-jwt';

 @Injectable({
 providedIn: 'root'
 })
 export class AuthService
{
  private jwtHelper = new JwtHelperService();
  private token: string;
  private loggedInUsername: string;
  private _userURL : string = "http://localhost:8080/authentication";


  constructor(private http: HttpClient) {}

  public login(user: User): Observable<HttpResponse<User>> {
      return this.http.post<User>(`${this._userURL}/authentication/login`, user, { observe: 'response' });
  }

  public logout(): void
  {
     this.token = null;
     this.loggedInUsername = null;
     localStorage.removeItem('user');
     localStorage.removeItem('token');
     localStorage.removeItem('users');
  }

  public saveToken(token: string): void {
    this.token = token;
    localStorage.setItem('token', token);
  }

 public addUserToLocalCache(user: User): void {
   localStorage.setItem('user', JSON.stringify(user));
 }

 public getUserFromLocalCache(): User {
    return JSON.parse(localStorage.getItem('user'));
 }

 public loadToken(): void {
   this.token = localStorage.getItem('token');
}

 public getToken(): string {
    return this.token;
 }

 public isLoggedIn(): boolean {
    this.loadToken();
    if (this.token != null && this.token !== ''){
        if (this.jwtHelper.decodeToken(this.token).sub != null || '') {
          if (!this.jwtHelper.isTokenExpired(this.token)) {
             this.loggedInUsername = this.jwtHelper.decodeToken(this.token).sub;
             return true;
          }
        }
    } else {
      this.logout();
      return false;
     }
 }
}

0 个答案:

没有答案