环境变量可以在运行时(生产)在Rails应用程序中设置?

问题描述:

我有一个web应用程序,我的建筑物的核心功能涉及在亚马逊上执行自动CRUD任务。鉴于正确的用户登录名和密码,应用程序用户将能够在亚马逊上删除和添加地址。我在自动化任务中使用了带有mozilla代理程序的selenium网络驱动程序。目前,用户名和密码使用figaro gem在application.yaml文件中进行硬编码。我想要的是访问该应用的任何人都可以输入自己的亚马逊用户名和密码,以便地址删除和删除过程发生在他们自己的亚马逊帐户上。环境变量可以在运行时(生产)在Rails应用程序中设置?

有没有一种方法可以通过表单(经过他们的同意)捕获当前用户的登录名和密码,并在运行时在secrets.yaml中将这些设置为环境变量。所以,登录名成为

amazon_user_name: <%= ENV["SECRET_USER_NAME"] %> 

和密码成为

amazon_pass_word:<%= ENV [ “SECRET_PASS_WORD”]%>

或者是有一个整体更好,更合适的方法来完成这件事?

只是为了进一步明确和简化:所有我想要做的就是让用户通过我的应用程序在他们的亚马逊登录到他们的亚马逊帐户,我的应用程序可以执行地址自动化(添加和删除批量送货地址)的手段帐户。任何安全的方法来完成这一点是值得欢迎的。

+0

会创建一个表保存的用户名/密码不起作用?这将允许您在数据库中加密这些密码。 –

对于每个用户设置,最简单的事情就是将其设置在用户会话中,如果您愿意,可以进行加密。

这样的:

session[:super_secret_pass] = 'somepassword'

然后从控制器传递到你在哪里调用它。

+0

刚刚起来......大部分的安全解决方案建议不要在会话中保存这些秘密。 –

+0

当然 - 你可以把它们放在db中,在用户的模型中加入一些盐作为字段,或者其他的东西。只是不作为环境变量,因为这是一个应用程序范围广泛而不是用户特定的 – dstull

+0

他试图使用rails环境以外的信息吗? –