56

我使用express jwt,通过jQuery创建我的令牌,并将其保存在我的localStorage中,使用:

$.ajax(美元)({网址:“http://localhost:8080/login",类型:'POST',数据:表单数据,错误:函数(err){console.log('错误!',err)},成功:函数(数据){console.log('成功!')localStorage.setItem('token',data.id_token);}});

我在后端有一个受保护的路由,如:

app.get('/upload',jwt({secret:config.secret}),function(req,res){res.sendFile(路径.join(__dirname+'/upload.html'));});

如何使用请求头从localStorage发送令牌?

4个答案4

重置为默认值
89

您可以在$.ajax(美元)请求:

$.ajax(美元)({网址:“http://localhost:8080/login",类型:'GET',//从localStorage获取存储的令牌并在标头中设置headers:{“Authorization”:“Bearer”+localStorage.getItem('token')}});
4
  • 为什么要将令牌发送到标头中?为什么不导入数据??
    – 家庭23
    评论 2017年11月5日22:05
  • 2
    @ahmedbhs我相信他试图以某种方式保护代币。 评论 2017年12月16日17:22
  • 41
    对于JWT头球,这对我很管用headers:{“授权”:“持有者”+令牌} 评论 2018年1月22日2:46
  • 2
    在Javascript中像变量一样公开JWT标记时,应该非常小心。绝对不要在前台曝光developer.okta.com/blog/2018/06/20/… 评论 2020年1月10日5:05
12

如果您使用的是JWT身份验证,那么以下是将其添加到.ajax()方法中的头文件中的方式:

标题:{授权:“持有者”+令牌}

,

5

我使用下面的方法用结果状态类型涵盖JWT身份验证

$.ajax(美元)({网址:“http://localhost:8080/login",类型:“POST”,headers:{Authorization:$`Bearer${localStorage.getItem(“token”)}`},数据:表单数据,错误:函数(err){开关(错误状态){案例“400”://错误的请求断裂;案例“401”://未经授权断裂;案例“403”://禁止断裂;违约://发生了不好的事断裂;}},成功:函数(数据){console.log(“成功!”);}});
1
  • 2
    但问题是如何将保存的令牌与请求一起发送。不知道如何在请求后保存令牌。
    – 拉兹
    评论 2020年1月7日14:38
0

你也可以这样做。

$.ajax(美元)({type:'get',//或任何其他方法dataType:“json”,beforeSend:函数(xhr){xhr.setRequestHeader(“授权”,“承载”+令牌);},url:`your-endpoint`,成功:(数据、状态、xhr)=>{if(数据状态){//做点什么}其他{console.warn(“AJax失败”);}},错误:(xhr,textStatus,errorMessage)=>{console.log(xhr.responseJSON.message);}});

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览已标记的其他问题问你自己的问题.