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

时间:2015-08-17 18:02:03

标签: post authorization mean-stack

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

解码和编码有问题。

Fyi:请求有效并且不需要任何授权。唯一的问题是从邮递员发送邮件请求到本地运行的服务器。

有关如何使用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)
  })

1 个答案:

答案 0 :(得分:2)

我将根据提供的信息拍摄你要去的地方......

高级用户参见第1步和第2步2下面的快速回答。

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

因为没有解释您正在测试哪些端点或者使用了哪些参数,所以我将引导您完成应该使用的端点,以防它不是您已经在做的事情。

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

假设:

  • MongoDB正在本地运行
  • 节点在本地运行您的应用程序,不会抛出任何错误
  • 您已通过本地正在运行的网络应用注册用户,并使用此用户的凭据登录

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

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

发出POST请求
  • 确保从方法下拉列表中选择了POST
  • 确保选中“标题”按钮以查看输入框以编辑标题信息
  • 为标题添加“Content-Type”(无引号),为标题值设置“application / json”(无引号)
  • 选择“原始”按钮,并将您之前在textarea中注册的用户的JSON数据。示例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,并将之前的JWT响应粘贴到值中(再次没有引号),创建一个新的Header(不是url参数键,Header)
  • 点击“发送”

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

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