有没有办法在rails中加密Http基本身份验证密码?

时间:2016-05-10 12:58:43

标签: ruby-on-rails-4 http-authentication

我在控制器中写了以下内容:

http_basic_authenticate_with name: "foo", password: "bar", except: [:new, :show, :edit, :create]

但是当我把它推到我的仓库时,密码就在那里供所有人查看。有没有办法加密密码?

1 个答案:

答案 0 :(得分:1)

您可能想要使用环境变量:) 有宝石(基本上与所有东西一样):https://github.com/bkeepers/dotenv

在您的.env文件中,您有以下内容:

AUTHENTICATION_USERNAME="foo"
AUTHENTICATION_PASSWORD="bar"

在你的控制器中,你可以这样写:

http_basic_authenticate_with name: ENV['AUTHENTICATION_USERNAME'], password: ENV['AUTHENTICATION_PASSWORD'], except: [:new, :show, :edit, :create]

这样您的代码就会与实际信息完全分开。 确保不将.env文件添加到git-repository中,方法是将其添加到gitignore:

.env

这样做是否会将您在.env中设置的变量加载到现有环境变量中。这样,有人需要实际登录到您的服务器并访问该特定文件才能获得用户名/密码。这比在控制器中以纯文本形式使用用户名/密码更安全;)