【问题标题】:Can environment variables be set at run time (production) in a rails app?可以在 Rails 应用程序的运行时(生产)设置环境变量吗?
【发布时间】:2017-09-30 12:32:31
【问题描述】:

我正在构建一个 Web 应用程序,其核心功能涉及在亚马逊上执行自动化 CRUD 任务。给定正确的用户登录名和密码,应用用户将能够在亚马逊上删除和添加地址。我正在使用 selenium web-driver 和 mozilla 代理来执行自动化任务。目前,用户名和密码使用 figaro gem 硬编码在 application.yaml 文件中。我想要的是让任何访问该应用程序的人都能够输入他们自己的亚马逊用户名和密码,以便地址删除和删除过程发生在他们自己的亚马逊帐户上。

有没有办法我可以通过表单(当然在他们同意的情况下)捕获当前用户的登录名和密码,并在运行时在 secrets.yaml 中将它们设置为环境变量。所以登录名就变成了

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

密码变成了

amazon_pass_word:

或者有没有更好更简洁的方法来完成这项工作?

只是为了进一步澄清和简化:我想要做的就是允许用户通过我的应用程序登录他们的亚马逊账户,这样我的应用程序就可以在他们的亚马逊账户上执行地址自动化(批量添加和删除送货地址) .欢迎使用任何安全的方法来实现这一点。

【问题讨论】:

  • 不会为保存的用户名/密码创建表格吗?这将允许您在数据库中加密这些密码。

标签: selenium ruby-on-rails-4 web-scraping environment-variables production-environment


【解决方案1】:

对于每个用户的设置,最简单的方法是在用户会话中设置它,如果你愿意,可以加密。

像这样:

session[:super_secret_pass] = 'somepassword'

然后将它从控制器传递到您调用它的位置。

【讨论】:

  • 请注意...大多数 Rails 安全建议都说不要在会话中保存这些机密。
  • 当然 - 您可以将它们放入 db 中,并在用户模型上添加一些盐作为字段或其他内容。只是不作为环境变量,因为它是应用范围的,而不是特定于用户的
  • 他是否试图在 rails 环境之外使用信息?
  • 该信息只需要登录亚马逊
猜你喜欢
  • 1970-01-01
  • 2015-07-31
  • 2017-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-21
  • 1970-01-01
相关资源
最近更新 更多