1

我有一个公共 Github 存储库,用于我想添加身份验证的应用程序。我计划使用基本的 http 身份验证,但这需要我将用户名和密码存储在公开的配置文件(或类似文件)中。

这意味着任何人都可以在公共配置文件中找到用户名和密码。

有没有办法在不创建完全私有的仓库的情况下保持身份验证安全(即私有)?

或者也许是一种在 Heroku 推送期间绕过 Github 的方法,以便实时(Heroku)环境接收身份验证凭据,而无需从公共 Github 存储库中检索它们?

编辑:感谢您的回复。他们可能很好地解决了我的问题,但不幸的是,他们有点超出我的技能水平。我认为我最好的选择是在处理身份验证和环境变量之前进行更多研究。再次感谢!

4

2 回答 2

4

Heroku 实际上有这样的解决方案,你可以使用 config vars。在终端或 CMD 中,您可以通过运行添加配置变量:

heroku config:add USERNAME=johndoe
heroku config:add PASSWORD=password

依此类推,然后您可以使用以下命令访问应用程序中的变量:

ENV['USERNAME']
ENV['PASSWORD']

Heroku 配置变量

这是迄今为止实现您想要的最安全的方式,并且可以安全地供公众使用。

于 2013-04-04T23:17:01.423 回答
2

执行此类操作的规范方法是将凭据放入环境变量或外部文件中。我发现环境变量最简单,尤其是 Heroku。

这是控制器中使用来自环境变量的凭据的基本身份验证示例(改编自Railscast #82

class SomeController < ApplicationController

  before_filter :authenticate

protected

  def authenticate
    authenticate_or_request_with_http_basic do |username, password|
      username == ENV['MYAPP_USERNAME'] && password == ENV['MYAPP_PASSWORD']
    end
  end

end

然后,您可以在您的开发环境中设置环境变量,如果您愿意,可以在 shell 启动文件中。这是一个 bash/zsh 样式的示例:

export MYAPP_USERNAME=admin
export MYAPP_PASSWORD=foobar

配置 Heroku:

heroku config:set MYAPP_USERNAME=admin MYAPP_PASSWORD=foobar
于 2013-04-04T23:23:16.143 回答