Heroku无法授权Stormpath

时间:2015-09-23 14:24:49

标签: ruby-on-rails angularjs heroku stormpath

我试图在Heroku上托管我的应用程序。它使用Stormpath进行用户管理,特别是stormpath-sdk-angularjsstormpath-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());

1 个答案:

答案 0 :(得分:0)

我能够让Heroku通过adding it on授权Stormpath到我在Heroku的应用程序。添加后,Heroku为我提供了一个具有不同API凭据的Stormpath帐户,我在中间件中使用了这些帐户。我不确定这是否是唯一的方法,但我原来的Stormpath帐户几乎没有配置将这些设置移植到新的设置很快。