http post 请求 x-auth(平均堆栈)

http post request with x-auth(mean stack)

我从这个 link 获得的平均堆栈示例应用程序:https://github.com/dickeyxxx/mean-sample runs perfectly on my heroku server, posts and logins without any failure. It uses tokens when a post request is made. However, since i am not familiar with this system, i couldn't manage to post from postman to my local database when i run this server on (http://localhost:3000)。虽然我试图将已创建的令牌放入 postman X-AUTH Header,但我收到此错误: 错误:签名验证失败。

解码编码有问题

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

关于如何使用 x-auth 从 post 人发送 post 请求的任何想法?

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

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

我将根据提供的信息对您的目标进行拍摄...

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

首先,您的 auth.js 和 users.js 文件与原始存储库略有修改。看起来他们仍然应该完成工作,但对于遵循此答案的任何其他人,我引用的是 git 存储库的 ch8 分支,因为那是处理授权的章节。像往常一样,您将必须执行 "npm install" 并可能解决在尝试启动本地主机应用程序和 运行.

时出现的任何问题

因为没有解释您正在测试哪些端点或使用了哪些参数(如果有的话),我将向您介绍应该使用哪些参数,以防您已经没有这样做。

首先,您可以在浏览器的网络检查器中检查 URL 被调用的内容,例如 Chrome 检查器或 Firebug。在 Firebug 中,您需要确保查看的是 "Console" 选项卡,从那里,您甚至可以右键单击 URL 和 select "Copy as cURL" 如果你更喜欢使用命令行。查找所需端点及其使用的方法(如 GET 或 POST)的最简单方法是检查当您通过 Web 应用程序登录时此处发生的情况。

假设:

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

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

1。向 http://localhost:3000/api/sessions

发出 POST 请求
  • 确保 POST 是从方法下拉列表select编辑的
  • 确保 "Headers" 按钮已 select 以查看输入框以编辑 Header 信息
  • 为 Header 放置 "Content-Type"(无引号),为 header 值放置 "application/json"(无引号)
  • Select "raw" 按钮并将您之前在文本区域中注册的用户的 JSON 数据。 JSON 数据示例:{"username":"yourusername@example.com","password":"password"}
  • 命中"Send"

2。向 http://localhost:3000/api/users

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

您应该会看到一个 JSON object 响应,其中包含一个 _id 属性 和一个用户名 属性。

所以,基本上你不应该首先使用 X-Auth header 发出 POST 请求,而只能发出 GET 请求。