как установить токен после входа в систему в треугольной форме? - PullRequest
0 голосов
/ 02 июля 2019

Как я могу установить токен аутентификации в заголовке после входа в Restrict?Вот мой код входа и объявление модуля приложения.

    this.authService
      .authenticate(this.login)
      .then(res => {
        if (res.data) {
          localStorage.setItem("currentUser", JSON.stringify(res.data));
          // Restangular.setDefaultRequestParams({ authentication: res.data.token }); 
          // set heder token here 
          this.router.navigate(["member/home"]);
        } else {
          console.log("not found");
        }
      })
      .catch(err => {
        console.log(err);
      });

app.module.ts

  RestangularProvider.setBaseUrl(environment.apiUrl);
  let currentUser = JSON.parse(localStorage.getItem("currentUser"));
  if (currentUser) {
    RestangularProvider.setDefaultHeaders({
      Authorization: currentUser.token
    });
  }

1 Ответ

1 голос
/ 02 июля 2019

Вы можете добиться этого с помощью шаблона перехватчика:

Сначала создайте новый сервис:

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

@Injectable()
export class JwtInterceptor implements HttpInterceptor {
    intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

        let currentUser = JSON.parse(localStorage.getItem('currentUser'));
        if (currentUser && currentUser.token) {
            request = request.clone({
                setHeaders: { 
                    Authorization: `Bearer ${currentUser.token}`
                }
            });
        }

        return next.handle(request);
    }
}

обновить app.module.ts:

import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';

    providers: [
        { provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true },
    ]
...