1

我正在使用 express-stormpath 来处理我的 express 应用程序中的用户管理。我正在使用stormpath 的默认登录视图和方法,只需要电子邮件和密码。但是,我不知道问题是否实际上是由于风暴路径造成的。在测试一些 CRUD 路由时,我确信我输入了正确的凭据,但身份验证失败。好吧,它不会彻底失败。我得到状态 200 或 302 并被重定向回登录页面。

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

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

上述 httpie 命令的输出为: 在此处输入图像描述

对于 Postman(Chrome REST 客户端),我使用的是 Basic Auth 助手。 在此处输入图像描述

但是,通过 Web 客户端登录应用程序是可行的。

到底是怎么回事?

编辑 1

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

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

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

4

2 回答 2

0

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

于 2015-06-29T17:49:10.123 回答
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

希望这会有所帮助=)

于 2015-07-01T01:04:33.510 回答