rails中的Http基本认证密码有什么办法可以加密吗?

Is there any way to encrypt the Http basic authentication password in rails?

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

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

但是当我将它推送到我的存储库时,每个人都可以看到密码。有没有办法加密密码?

您可能想为此使用环境变量 :) 有一个 gem(基本上就像所有东西一样):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-存储库,方法是将其添加到您的 gitignore:

.env

所以它的作用是将您在 .env 中设置的这些变量加载到您现有的环境变量中。这样,有人需要实际登录到您的服务器并访问该特定文件才能获得 username/password。这应该比在控制器中以纯文本形式显示 username/password 更安全 ;)