【问题标题】:Heroku is unable to authorize StormpathHeroku 无法授权 Stormpath
【发布时间】:2015-09-25 06:50:07
【问题描述】:

我正在尝试在 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());

【问题讨论】:

  • 确认process.env 的所有属性和值都正确?
  • @charlietfl 是的,我做到了,它确实有正确的值。
  • 您的 Express 应用程序中是否还有其他内容试图修改请求标头?
  • @Nate Barbettini 我编辑了帖子,将 Stormpath 之前使用的中间件包含在帖子中。

标签: ruby-on-rails angularjs heroku stormpath


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2016-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 2017-10-30
    相关资源
    最近更新 更多