• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
    • Questions
    • Teachers
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

283
Views
¿Cómo puedo acceder a un servicio angular dentro de un Guard?

Tengo un servicio angular que verifica si mi cliente tiene una cookie JWT válida solo para http. Como no puedo acceder a esta cookie desde el cliente, necesito llamar al método de servicio en mi Guard para enviar una llamada al servidor y ver si mi usuario está autenticado. El único problema es que no tengo idea de cómo debo obtener una instancia del servicio dentro de Guard.

El código que he escrito hasta ahora:

Mi guardia (o al menos lo que debería hacer):

 export class AuthGuard implements CanActivate { canActivate( route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { let isAuthenticated : boolean = false; auth: AuthService = new AuthService() this.auth.getAuthStatus() .subscribe({ res => { if(res.status == 200){ isAuthenticated = true; } } }); return isAuthenticated; } }

mi servicio:

 export class AuthService{ constructor(private http: HttpClient) { } getAuthStatus(): Observable<HttpResponse<any>>{ return this.http.post(environment.server + environment.routes.authRoutes.status, "", { withCredentials: true, observe: 'response' }) } }

Sé que de alguna manera necesito obtener una instancia del servicio http, pero no creo que sea una buena idea obtener una nueva instancia cada vez. Me gustaría crear una instancia del servicio una vez y luego usarla, o hacerla estática para que no necesite ninguna instancia. ¿Cuál sería la mejor solución a esto?

about 3 years ago · Santiago Trujillo
1 answers
Answer question

0

Simplemente puede inyectarlo usando el constructor

 @Injectable() export class AuthGuard implements CanActivate { constructor( private authService: AuthService, ) {} canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { // use 'this.authService.whatever()' } }

Si desea una instancia única de cualquier servicio que estará disponible en todas partes en su aplicación.

También conocido como servicio Singleton .

Simplemente puede agregar esto a la clase de servicios:

 @Injectable({ providedIn: 'root' }) export class MyServiceClass...

Un servicio singleton es un servicio para el que solo existe una instancia en una aplicación.

about 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error