我正在尝试在 Heroku 上托管我的应用程序。它使用 Stormpath 进行用户管理,特别stormpath-sdk-angularjs
是stormpath-sdk-express
. 我已经将我的 Stormpath API 凭据加载到 Heroku 的配置变量中,并将它们包含到我服务器上的 Stormpath 中间件中,如下所示:
var stormpathExpressSdk = require('stormpath-sdk-express');
var spMiddleware = stormpathExpressSdk.createMiddleware({
cache: 'memory',
apiKeyId: process.env.STORMPATH_API_KEY_ID,
apiKeySecret: process.env.STORMPATH_API_KEY_SECRET,
appHref: process.env.STORMPATH_APP_HREF,
secretKey: process.env.STORMPATH_SECRET_KEY,
...
(other options)
...
});
spMiddleware.attachDefaults(app);
app.use(spMiddleware.authenticate);
// Includes all routes
var router = require('./router')(app);
module.exports = app;
我不断得到的错误heroku logs
是:
ResourceError:HTTP 401,Stormpath 401 ( http://www.stormpath.com/docs/quickstart/connect ):需要使用有效的 API 密钥进行身份验证。]
2015-09-23T13:54:04.209032+00:00 app[web.1]: userMessage: '需要身份验证'。
但是我知道我的凭据是正确的,因为我可以在本地启动我的应用程序。我什至硬编码了 API 凭据,直接从 Heroku 配置复制,以确保我能够在本地启动。为什么这不起作用?
编辑:
在 Stormpath 中间件之前使用的中间件。
app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cookieParser());