当前位置: 首页 > 知识库问答 >
问题:

使用$http.get但不使用$http.post的JWT身份验证

司马高韵
2023-03-14

我刚开始说堆栈。我正在使用jwt来验证apiendpoint'/api/candidates'

在客户端/Angular js服务中,我有以下条目

resumeFactory.get = function(candidateName) {
   return  $http.get('/api/candidates', {
      headers: {
        Authorization: 'Bearer '+ authenticationService.getToken()     
   });
};

在服务器端,我有:

app.get('/api/candidates', auth, function (req, res) {
if (!req.payload._id) {
    //user not logged in
    console.log(req);
    res.status(401).json({"message": "no  user logged in from candidates"});
}
else {
    Candidate.find({}, function (err, candidates) {
        if (err) {
            res.send(err);
        }
        res.json(candidates);
    });
}
});

这个很管用。即'auth'能够从报头中提取令牌

当我将所有内容改为post而不是get时:

在客户端

$http.post()  

在服务器端:

app.post()

我从jwt得到一个错误,如下所示:

UnauthorizedError: No authorization token was found

对正在发生的事情有什么建议吗?。我可以用get工作,但我想知道为什么post不工作

共有1个答案

於炯
2023-03-14

对于$http.postconfig是第三个参数,而不是第二个参数(像get)因此相应地更新参数:

$http.post('/url', { cool: postData }, {
  headers: {
    Authorization: 'Bearer '+ authenticationService.getToken()
  }    
});

更好的方法是使用拦截器将授权头添加到所有请求中。

 类似资料:
  • 我正在使用SpringBoot开发具有微服务架构的Rest Backend。为了保护endpoint,我使用了JWT令牌机制。我正在使用Zuul API网关。 如果请求需要权限(来自JWT的角色),它将被转发到正确的微服务。Zuul api网关的“WebSecurityConfigrerAdapter”如下。 这样,我必须在这个类中编写每个请求授权部分。因此,我希望使用方法级安全性,即“Enabl

  • jwt不应该仅仅用于认证用户吗?我读到过可以在里面存储非敏感的东西,比如用户ID。将权限级别之类的东西存储在令牌中可以吗?这样我可以避免数据库调用。

  • 我正在开发一个简单的API来处理Firebase所做的认证——稍后用于Android客户端。 因此,在Firebase控制台中,我启用了Facebook和Google登录方法并创建了一个示例html页面,我可以使用它来测试登录方法-下一个函数由按钮调用: 接下来,我使用令牌,并通过jQuery的一个简单ajax调用将它发送到我的API: 下一站:API后端。网芯。 在启动下,我配置了 JwtBea

  • 在身份验证等情况下,与会话相比,使用JWTs有什么优势? 它是作为独立方法使用还是在会话中使用?

  • 是否可以在ASP中支持多个JWT令牌发行者。净核心2?我想为外部服务提供一个API,我需要使用两个JWT代币来源——Firebase和定制JWT代币发行人。在ASP。NET core I可以为承载身份验证方案设置JWT身份验证,但只能为一个机构设置: 我可以有多个发行人和受众,但我不能设置多个权限。

  • 但请求呢?和是用户的属性,但应将它们发送到endpoint。如果我将资源发送到endpoint,则没有多大意义。 对此有没有办法,遵循JSONAPI并保持API的意义?