通过Postman和httpie访问CRUD路由时,身份验证失败

时间:2015-06-28 02:21:44

标签: node.js express basic-authentication postman stormpath

我正在使用express-stormpath来处理我的快递应用程序中的用户管理。我正在使用stormpath的默认登录视图和方法,只需要电子邮件和密码。但是,我不知道问题是否真的是由于stormpath。在测试一些CRUD路由时,我确信我输入的是正确的凭据,但身份验证失败。嗯,它并没有完全失败;我获得状态200或302并被重定向回登录页面。

我与httpie一起使用的命令是:

http --verbose -a username@email.com:password localhost:3000/api/users

以上httpie命令的输出是: enter image description here

对于Postman(Chrome REST客户端),我使用的是Basic Auth帮助程序。 enter image description here

然而,通过网络客户端登录应用程序。

发生了什么事?

编辑1

这就是我保护路线的方式:

app.use('/', stormpath.loginRequired, routes);

app.use('/api/users', stormpath.apiAuthenticationRequired, users);

2 个答案:

答案 0 :(得分:0)

我在Stormpath工作,我应该能够提供帮助。你能告诉我们你是如何保护/api/users路线的吗?如果要使用基本身份验证,则需要使用stormpath.apiAuthenticationRequired中间件。

答案 1 :(得分:0)

我是这个图书馆的作者 - 只想进入。

此处的问题是您使用您的用户名和密码进行身份验证 - 这不是我们的API身份验证的工作方式。

您需要做的是首先为您的用户帐户创建一个API密钥,然后使用该密钥进行身份验证。

以下是如何为用户帐户创建API密钥的示例:

req.user.createApiKey(function(err, key) {
  res.send('New API key created: id=' + key.id + ' secret=' + key.secret);
});

这将为您的用户配置一个新的API密钥并输出它。

一旦你拥有了API密钥(它分为两部分,ID和一个秘密),你就可以提出如下命令:

http --verbose -a apikeyid:apikeysecret localhost:3000/api/users

希望这有助于=)