0

Привет Я создал общий сервис, из которого я могу создавать объекты с помощью общих HTTP-запросов.Настройка заголовков (токенов) нескольких объектов после аутентификации пользователя в Angular2

Проблема я столкнулся сейчас перейти к каждому созданному объекту маркер в их заголовках, если проверка подлинности пользователя (я получит фишку как ответ, который хранится в LocalStorage)

Так в основном Я могу создать эти пользовательские объекты HTTP в любом месте (по компонентам путем инъекции) на любом уровне. У всех из них еще нет набора заголовков проверки подлинности. Как только пользователь будет аутентифицирован, все эти объекты будут иметь свой заголовок проверки подлинности.

Вот plunker

export class App { 

    myHttpObject1; 

    constructor(private myAuth:MyAuth, private myDatabase:MyDatabase) { 
    this.name = 'Angular2 (Release Candidate!)' 
    this.myHttpObject1 = this.myDatabase.httpSchema('users') 
    this.myHttpObject1.log() 
    // this.myHttpObject1.someOtherMethodes()... 
    } 

    login(){ 
    this.myAuth.login() 
    } 
    showHeaders(){ 
    this.myHttpObject1.log() 
    } 
} 

Ниже службы и один издеваться логин.

@Injectable() 

export class MyDatabase{ 

    private base_url:string; 
    private headers :Headers; 

    constructor(){ 
     this.base_url = 'https://jsonplaceholder.typicode.com/'; 
     this.headers = new Headers(); 
     this.headers.append('Content-Type', 'application/json'); 
     this.headers.append('Authorization',''); 
    } 

    public httpSchema(path:string){ 
     return new MyHttpObject(path, this.headers || new Headers()) 
    } 

} 

class MyHttpObject{ 
    constructor(public url:string, public headers:Headers){ 
    } 

    log(){ 
     console.log(this.url) 
     console.log(this.headers) 
    } 

    post(){ 
     console.log('here could be a http post') 
    } 

} 


@Injectable() 

export class MyAuth{ 
    login(){ 
    setTimeout(()=>{ 
     console.log('logged In'); 
     localStorage.setItem('token':'mytoken'); 
    },2000) 
    } 
} 

ответ

0

Посмотрите на инжектор Http, он перехватывает вызов и добавляет все, что вам нужно, к объекту http.

+0

привет, Джон, не могли бы вы немного подробнее? Или добавить ссылку? Благодаря! –

+0

Я сказал инжектор, его перехватчик. Это позволяет перехватить HTTP-запрос до его отправки, чтобы изменить заголовки. Он будет делать это для каждого HTTP-запроса .... https: //www.illucit.com/blog/2016/03/angular2-http-authentication-interceptor/ –