0
votes

Comment utiliser JWT / Intercepteur dans Angular pour la méthode de connexion / enregistrement

Je crée une méthode de registre et de connexion. J'utilise un intercepteur mais c'est une erreur 401. Je ne comprends pas le jeton de régler l'en-tête.

Ceci est mon code: https://stackblitz.com/github/ntgiang4991/jwt

jeton de fichier.interceptor.ts: xxx < p> fichier auth.service.ts xxx

registre de fichier.component.html xxx

registre de fichier.component.ts xxx


0 commentaires

3 Réponses :


0
votes

Après avoir réglé les en-têtes pour mettre à jour les en-têtes en temps réel, vous disposez des en-têtes qui peuvent être effectués en appelant headers.Keys () code>

voici la méthode AddTToken mise à jour: P >

private addToken(request: HttpRequest<any>, token: string){
    const newReq = request.clone({
       setHeaders: {
          'Authorization': `Token ${token}`,
          'Content-type': 'application/json; charset=utf-8'
       },
    })
    newReq.headers.keys();
    return newReq;  
}


1 commentaires

Il avait le jeton mais la valeur du jeton est "null". Pouvez-vous m'aider? Merci de votre aide!



0
votes

Je pense que c'est un jeton porteur.

    export class TokenInterceptor implements HttpInterceptor {
  constructor(public auth: AuthService) { }

  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    let token = localStorage.getItem('token');
    if (token) {
        const myRequest =  request.clone({
      setHeaders: {
        'Authorization': `Bearer ${token}`
      }
    });
        return next.handle(myRequest);
    }
    return next.handle(request);
  }
}


8 commentaires

Mon jeton est null. Est-ce que tu sais pourquoi? Merci!


Avez-vous des jetons présents dans votre navigateur localStorage?, Si oui pouvez-vous enregistrer le jeton dans l'intercepteur?


Mon journal de jeton est "null". Je ne sais pas pour obtenir le jeton, puis le sauvegarder au stockage local?


La plupart des cas après la connexion, nous sauvegons le jeton donné en localStorage par localStorage.setTitem («jeton», valeur de jeton) une fois son ensemble, il sera visible dans les outils de développement-> Application-> localStorage-> Jeton, uniquement lorsque son présent Vous pouvez obtenir le jeton par localStorage.getToken.


C'est la première connexion, comment puis-je obtenir le jeton lorsque le login est faux?


Généralement, seulement sur la connexion avec succès, nous allons obtenir des jetons d'API, alors nous allons le stocker dans localStorage


sur la connexion réussie, ajoutez jeton au stockage local, puis vous pourrez l'ajouter dans l'intercepteur


Après une connexion réussie, définissez le jeton dans le stockage local.



0
votes

Essayez cette INTERPEP:

import { Injectable } from '@angular/core';
import {
  HttpRequest,
  HttpHandler,
  HttpEvent,
  HttpInterceptor,
  HttpResponse,
  HttpErrorResponse
} from '@angular/common/http';

import { catchError, map } from 'rxjs/operators';
import { AuthService } from './auth.service';
import { Observable, throwError } from 'rxjs';
@Injectable()
export class TokenInterceptor implements HttpInterceptor {

  constructor(public auth: AuthService) { }

  intercept(request: HttpRequest<any>, next: HttpHandler) {
    console.log(request);
    let token = localStorage.getItem('token');
         if (token) {
          let clonedReq = this.addToken(request, token);
          return next.handle(clonedReq).pipe(
          map((event: HttpEvent<any>) => {
              if (event instanceof HttpResponse) {
                console.log('event-body-->>>', event.body);
              }
              return event;
          }),
          catchError((error: HttpErrorResponse) => {
              console.log('error',error);
              return throwError(error.error);
          }));
      } else {
        return next.handle(request);
      }
  }

     private addToken(request: HttpRequest<any>, token: any) {
  if (token) {
      let clone: HttpRequest<any>;
      clone = request.clone({
          setHeaders: {
              'Authorization': `Token ${token}`,
              'Content-type': 'application/json; charset=utf-8'
            }
        });
      return clone;
    }
  return request;
}
}


0 commentaires