4

我正在尝试在我的 Heroku 应用程序上使用 express-stormpath。我在这里关注文档,我的代码非常简单:

var express = require('express');
var app = express();
var stormpath = require('express-stormpath');

app.use(stormpath.init(app, {
  website: true
}));

app.on('stormpath.ready', function() {
  app.listen(3000);
});

我已经看过这个问题并关注了Heroku devcenter docs。文档说对于 Heroku 应用程序,没有必要传递选项,但我仍然尝试传递选项,但没有任何效果。例如,我试过这个:

app.use(stormpath.init(app, {
   // client: {
   //   file: './xxx.properties'
   // },
   client: {
     apiKey: {
       file: './xxx.properties',
       id: process.env.STORMPATH_API_KEY_ID || 'xxx',
       secret: process.env.STORMPATH_API_KEY_SECRET || 'xxx'    
     }
   },
   application: {
     href: 'https://api.stormpath.com/v1/applications/blah'
   },
}));

为了尝试看看发生了什么,我在stormpath-config策略验证器中添加了一个console.log行来打印客户端对象,它给了我这个:

{ file: './apiKey-xxx.properties',
  id: 'xxx',
  secret: 'xxx' }
{ file: null, id: null, secret: null }

Error: API key ID and secret is required.

为什么它被调用了两次,第二次,为什么客户端对象的文件、id 和 secret 具有空值?

当我跑步时heroku config | grep STORMPATH,我得到

STORMPATH_API_KEY_ID:     xxxx
STORMPATH_API_KEY_SECRET: xxxx
STORMPATH_URL:    https://api.stormpath.com/v1/applications/[myappurl]
4

2 回答 2

2

我是 express-stormpath 库的原作者,并且还为 Stormpath 编写了 Heroku 文档。

这 100% 是我的错,并且是 Stormpath 方面的一个文档/配置错误。

过去,我们所有的库都默认查找几个环境变量:

  • STORMPATH_URL(您的申请网址)
  • STORMPATH_API_KEY_ID
  • STORMPATH_API_KEY_SECRET

然而,不久前,我们开始升级我们的库,并意识到我们希望在我们所有支持的语言/框架/等中采用更标准的方法。为了使事情更明确,我们实质上重命名了我们看起来的变量默认情况下,为:

  • STORMPATH_APPLICATION_HREF
  • STORMPATH_CLIENT_APIKEY_ID
  • STORMPATH_CLIENT_APIKEY_SECRET

不幸的是,我们还没有更新我们的 Heroku 集成或文档来反映这些变化,这就是为什么你会遇到这个讨厌的问题。

我刚刚向我们的工程团队提交了一张票,以修复我们 Heroku 插件默认提供的变量的名称以包含我们的新变量,我将在今天下午晚些时候更新我们的 Heroku 文档,以便为其他人解决这个问题未来。

对于所有的困惑/沮丧,我深表歉意。有时这些东西会从裂缝中溜走,这样的经历让我意识到我们需要更好的测试来更早地抓住这些东西。

我将在内部进行一些更改,以确保我们有一个更好的流程来推出像这样的更新。

如果您想要一件免费的 Stormpath T 恤,请联系我,我会寄给您一件,以表示“感谢”忍受烦恼:randall@stormpath.com

于 2016-07-07T20:01:32.570 回答
2

经过无数小时后,我终于通过完全删除附加组件并通过Heroku CLI重新安装它,然后导出变量STORMPATH_CLIENT_APIKEY_IDSTORMPATH_CLIENT_APIKEY_SECRET. 出于某种原因,通过 Heroku Dashboard 安装它会导致 express-stormpath 找不到 apiKey 和 secret 字段(即使您导出变量)。

于 2016-07-06T23:48:40.347 回答