【问题标题】:http post request with x-auth(mean stack)带有 x-auth 的 http 发布请求(平均堆栈)
【发布时间】:2015-11-10 11:18:22
【问题描述】:

我从这个链接获得的平均堆栈示例应用程序:https://github.com/dickeyxxx/mean-sample 在我的 heroku 服务器上完美运行,发布和登录没有任何失败。它在发出发布请求时使用令牌。然而,由于我不熟悉这个系统,当我在 (http://localhost:3000) 上运行这个服务器时,我无法从邮递员发帖到我的本地数据库。尽管我尝试将已创建的令牌放入邮递员 X-AUTH Header,但我收到此错误: 错误:签名验证失败。

解码和编码有问题。

仅供参考:获取请求有效,不需要任何授权。唯一的问题是从 postman 向本地运行的服务器发送 post 请求。

任何想法如何使用 x-auth 从邮递员发送帖子请求?

由于我对这个问题没有深入的了解,我不确定添加哪一行代码可能会有所帮助。但是一些来自服务器的代码;

--Auth.js--

if (req.headers['x-auth']) {
    console.log(req.headers['x-auth']);
    req.auth = jwt.decode(req.headers['x-auth'], config.secret)
  }

--Users.js--

var auth = jwt.decode(req.headers['x-auth'], config.secret)
  User.findOne({username: auth.username}, function (err, user) {
    if (err) { return next(err) }
    res.json(user)
  })

【问题讨论】:

    标签: post authorization mean-stack


    【解决方案1】:

    我将根据所提供的信息来看看你的去向......

    高级用户请参阅下面的步骤 1 和 2 以获得快速答案。

    首先,您的 auth.js 和 users.js 文件在原始存储库中稍作修改。看起来他们仍然应该完成工作,但是对于遵循这个答案的其他人,我引用了 git repo 的 ch8 分支,因为那是处理授权的章节。像往常一样,您必须执行“npm install”,并可能解决尝试启动和运行 localhost 应用程序时出现的任何问题。

    由于没有说明您正在测试哪些端点或使用了哪些参数(如果有),我将引导您了解应该使用哪些端点,以防您已经在做的事情。

    首先,您可以检查浏览器网络检查器中调用了哪些 URL,例如 Chrome 检查器或 Firebug。在 Firebug 中,您需要确保您正在查看“控制台”选项卡,如果您更喜欢使用命令行,您甚至可以从那里右键单击 URL 并选择“复制为 cURL”。找到所需端点以及它们使用的方法(如 GET 或 POST)的最简单方法是检查通过 Web 应用程序登录时此处发生的情况。

    假设:

    • MongoDB 正在本地运行
    • Node 正在本地运行您的应用,没有抛出任何错误
    • 您已经通过本地运行的 Web 应用注册了一个用户,并正在使用该用户的凭据登录

    如果前面的步骤一切顺利,请在 Chrome 的 Postman 应用中继续执行以下操作:

    1。向http://localhost:3000/api/sessions 发出 POST 请求

    • 确保从方法下拉列表中选择 POST
    • 确保选中“标题”按钮以查看输入框以编辑标题信息
    • 将“Content-Type”(无引号)作为标头,将“application/json”(无引号)作为标头值
    • 选择“原始”按钮并将您之前注册的用户的 JSON 数据放入 textarea。 JSON 数据示例:{"username":"yourusername@example.com","password":"password"}
    • 点击“发送”

    2。向http://localhost:3000/api/users 发出 GET 请求(不是 POST)

    • 从您之前的请求中复制响应(如果一切顺利,应该是 JWT)
    • 将 Postman 中的端点更改为 http://localhost:3000/api/users
    • 将方法更改为 GET 而不是 POST
    • 通过将“X-Auth”(不带引号)放入 Header 中来创建一个新的 Header(不是 url 参数键,一个 Header),然后将您之前的 JWT 响应粘贴到值中(同样不带引号)
    • 点击“发送”

    您应该会看到带有 _id 属性和用户名属性的 JSON 对象响应。

    所以,基本上你不应该首先发出带有 X-Auth 标头的 POST 请求,而应该只发出 GET 请求。

    【讨论】:

      猜你喜欢
      • 2016-08-29
      • 2019-06-14
      • 2020-08-05
      • 1970-01-01
      • 2022-02-07
      • 1970-01-01
      • 2018-12-22
      • 2023-03-08
      • 2016-01-12
      相关资源
      最近更新 更多