Bom dia pessoal, estou praticando angular na versao 14 e spring boot, criei uma tela de login e estou tentando autenticar o meu acesso, entro com login e senha e nao consigo acessar o home/pagina inicial
do meu sistema
quando faço a autenticação pelo Postoman a API me disponibiliza o token perfeitamente
no angular, o meu AppRoutingModule esta configurado assim
Ou seja, teoricamente o path: ’ ’ deve me levar para tela de login e o path: ‘home’ devera ser acessado logo após a autenticação ocorrer com sucesso
AuthGuard
LoginComponent
LoginService
import { Router } from '@angular/router';
import { environment } from 'src/environments/environment';
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import jwtDecode from 'jwt-decode';
@Injectable({
providedIn: 'root'
})
export class LoginService {
url = `${environment.API}/api/login`;
private urlRefreshToken = `${environment.API}/private/refresh_token`;
constructor(private http: HttpClient, private router: Router) { }
async login(user: any) {
const result = await this.http.post<any>(this.url, user, {
observe: 'response',
}).toPromise();
const token = result!.headers.get('Authorization');
if (token) {
window.localStorage.setItem('token', token);
return result;
}
return false;
}
getAuthorizationToken() {
return window.localStorage.getItem('token');
}
isTokenExpired(token?: string): boolean {
if (!token) {
return true;
}
const date = this.getTokenExpirationDate(token);
if (date === undefined) {
return false;
}
return !(date.valueOf() > new Date().valueOf());
}
isUserLoggedIn() {
const token = this.getAuthorizationToken();
if (!token) {
return false;
} else if (this.isTokenExpired(token)) {
return false;
}
return true;
}
getTokenExpirationDate(token: string): Date {
try {
const decoded: any = jwtDecode(token);
if (decoded.exp === undefined) {
return null
}
const date = new Date(0);
date.setUTCSeconds(decoded.exp);
return date;
} catch (error) {
console.error(error);
window.localStorage.removeItem('token');
this.router.navigate(['']);
}
return null;
}
async refreshToken() {
if (!this.isUserLoggedIn()) {
return false;
}
const result = await this.http.post(this.urlRefreshToken, null, {
observe: 'response',
}).toPromise();
const token = result.headers.get('Authorization');
if (token) {
window.localStorage.setItem('token', token);
return result;
}
return false;
}
}
Observem que dentro do meu Service eu estou recebendo o token de autenticacao normalmente, pois meu login e senha estao corretos