如何从角度服务文件中的本地存储向令牌添加标头

时间:2019-03-25 14:14:21

标签: node.js angular6

如何将令牌添加到角度服务文件中本地存储的标头中

这里是我的节点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);}
    });
});
}

这是我的角度服务文件

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);
    }))
}

3 个答案:

答案 0 :(得分:0)

如果在尝试添加标题时存在问题,则我的代码正在使用以下代码:

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());

答案 1 :(得分:0)

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))
      );
}

答案 2 :(得分:0)

GOPATH