как добавить токен в заголовок из локального хранилища в файле службы angular

как добавить токен в заголовок из локального хранилища в файле службы angular

Вот мой API узла, который я назвал.....

{
app.post('/add',auth,(req,res)=>{

    const token = req.header('access_token');
    console.log(req.header);
    const decoded = jwt.verify(token, "secretkey",{expiresIn:'24h'});

    item.create({
        product:req.body.product,
        desc:req.body.desc,
        price:req.body.price,
        quantity:req.body.quantity,
        seller_id : mongoose.Types.ObjectId(decoded._id)

    },(err,item)=>{
        if(err){
            return res.send(err);}
        else{
        res.send(item);}
    });
});
}

это мой служебный файл angular

create(product_data: any) { 
    debugger

    let headers = new Headers();
    var token = localStorage.getItem('access_token');
    headers.append('access_token',token);
    return this.httpClient.post("/seller/add", JSON.stringify(product_data))
      .pipe(tap(res=>{
          console.log(res);
    }))
}

person Krishna Soni    schedule 25.03.2019    source источник


Ответы (2)


Если проблема существует, когда вы пытаетесь добавить заголовок, мой код работает примерно так:

const headers = new Headers({
            'Content-Type': 'application/json',
            'Authorization': 'Bearer ' + localStorage.getItem('token')
        }); return this._http.post(url, body, { headers }).map((data: any) => data.json());
person Arm144    schedule 25.03.2019

Класс HttpHeaders является неизменяемым, поэтому он возвращает клонированный объект при каждой операции модификации (append(), set()...). Итак, если вы хотите создать экземпляр пустого класса HttpHeaders, вам следует переназначить новый измененный объект при выполнении операции append.

create(product_data: any) { 
    const token = localStorage.getItem('access_token');
    let headers = new Headers();

    headers = headers.append('access_token', token);

    return this.httpClient.post("/seller/add", JSON.stringify(product_data), { headers })
      .pipe(tap(res =>{
          console.log(res);
    }));
}

Кроме того, в этой ситуации вы можете создать экземпляр класса HttpHeaders непосредственно с нужными вам заголовками (более чистый подход) следующим образом (я также внес небольшие изменения в ваш код (const вместо var, кавычек и форматирования):

create(product_data: any) { 
    const token = localStorage.getItem('access_token');
    const headers = new Headers('access_token', token);

    return this.httpClient.post('/seller/add', JSON.stringify(product_data), { headers })
      .pipe(
        tap(res => console.log(res))
      );
}
person Elias Garcia    schedule 25.03.2019