我正在使用 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;
}
}
}