CONFIGURACION DE HEADERS EN LARAVEL
1) Configuracion del Access-Control-Allow-Headers
Si desde el front-end envias determinados Headers, estas se deben agregar en los headers del
servidor: ejems: idUsuario, urlBase
LARAVEL CONFIG
$headers = [
'Access-Control-Allow-Origin' => '*',
'Access-Control-Allow-Methods' => 'POST, GET, OPTIONS, PUT, DELETE',
'Access-Control-Allow-Headers' => 'Content-Type, X-Auth-Token, Origin,
Authorization, idUsuario, urlBase',
];
FRONT-END INTERCEPTOR Ingresa los parametros adicionales en en Header
@Injectable({
providedIn: 'root',
})
export class AuthInterceptor implements HttpInterceptor {
constructor(
private snackBar: MatSnackBar,
private router: Router
) {}
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const token = Session.identity.access_token;
// AGREGAR LA CABECERA DE AUTENTICACION PARA TODAS LAS CONSULTAS
if (!req.headers.has('Authorization') && Session.exist()) {
req = req.clone({
setHeaders: {
Authorization: 'Bearer ' + token,
idUsuario: Session.identity.id_usuario.toString(),
urlBase: this.router.url
}
});
}
return next.handle(req).pipe(
tap(
event => event,
error => {
// SI LA PETICION RETORNA 401 ES POR Q EL TOKEN YA EXPIRO, ENTONCES SE LE REENVIA AL LOGIN
if (error instanceof HttpErrorResponse && error.status === 401) {
if (!!token) {
// SI EL TOKEN EXPIRA AL HACER UNA PETICION
Session.stop();
this.snackBar.open('SESIÓN FINALIZADA, VUELVA A INICIAR SESIÓN', '', {
duration: 5000, horizontalPosition: 'right', verticalPosition: 'top'
});
this.router.navigate(['/anonimo/iniciar-sesion']);
}
}
// PERMITIR Q TODOS LOS ESTADOS DE CODIGOS ENTRE 200 Y 299 RETORNEN TRUE
if (error instanceof HttpErrorResponse && error.status >= 200 && error.status < 300) {
const res = new HttpResponse({
body: null,
headers: error.headers,
status: error.status,
statusText: error.statusText,
url: error.url
});
return of(res);
} else {
return throwError(error);
}
}
)
);
}
}
0 Comentarios