Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

781
Vistas
NodeJs: error 401 (no autorizado), pasaporte, jwt. MEAN stack, nodo, express, angular, mangosta

Soy nuevo en Node, así que espero su ayuda ... Estoy trabajando en la aplicación MEAN stack e intento implementar el sistema de autenticación por pasaporte-jwt. Los formularios y páginas de registro/inicio de sesión funcionan correctamente y puedo acceder al token y almacenarlo en el almacenamiento local, pero cuando intento acceder al perfil de usuario después de iniciar sesión, aparece el siguiente error: 401 (no autorizado) .

Parece que no estoy enviando correctamente el token al servidor porque a través del cartero con el token del almacenamiento local todo funciona.

Aquí está mi código ..

Error

 HttpErrorResponse {headers: HttpHeaders, status: 401, statusText: 'Unauthorized', url: 'http://localhost:3000/users/profile', ok: false, …} error: "Unauthorized" headers: HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, headers: Map(0)} message: "Http failure response for http://localhost:3000/users/profile: 401 Unauthorized" name: "HttpErrorResponse" ok: false status: 401 statusText: "Unauthorized" url: "http://localhost:3000/users/profile"

Pasaporte.js

 const JwtStrategy = require('passport-jwt').Strategy; const ExtractJwt = require('passport-jwt').ExtractJwt; const User = require('../models/user'); const config = require('./db.config'); module.exports = function(passport) { let opts = {}; opts.jwtFromRequest = ExtractJwt.fromAuthHeaderWithScheme("jwt") opts.secretOrKey = config.secret; passport.use(new JwtStrategy(opts, (jwt_payload, done) => { User.getUserById(jwt_payload._id, (err, user) => { if(err) { return done(err, false); } if(user) { return done(null, user); } else{ return done(null, false); } }) })) }

Nodo ruta.js

 router.get('/profile', passport.authenticate('jwt', {session: false}), (req, res, next) => { res.json({user: req.user}) });

Servicio de autenticación

 getProfile() { let headers = new HttpHeaders(); this.loadToken(); headers.append('Authorization', this.authToken); headers.append('Content-Type', 'application/json'); return this.http.get('http://localhost:3000/users/profile', {headers: headers}) .pipe(map((res: any) => res)); } loadToken() { const token = localStorage.getItem('id_token'); this.authToken = token; }

Profile.ts aquí llamo al servicio de autenticación y luego obtengo un error

 constructor(private auth: AuthService) { } ngOnInit() { this.auth.getProfile().subscribe(profile => { this.user = profile.user; }, err => { console.log(err); return false; }); }

Gracias por adelantado :)

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Encontré la solución. Pasé mucho tiempo antes de publicar esta pregunta, por lo que para las personas que se encontraron con el mismo problema, la mejor manera será crear un interceptor:

 intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> { const idToken = localStorage.getItem('id_token'); if(idToken) { const cloned = req.clone({ headers: req.headers.set('Authorization', idToken) }); return next.handle(cloned) } else { return next.handle(req); }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda