ActiveRecord是否存在将密码存储到供应商站点的过度杀伤?

时间:2011-02-28 16:50:17

标签: ruby-on-rails activerecord environment

考虑这种情况。我们有一个内部Rails 2应用程序,使用Savon(Ruby SOAP库)连接到供应商站点。连接依赖于使用用户名和密码进行身份验证。密码每30天更改一次。现在 - 每30天开发人员必须访问供应商的网站,更新密码,然后返回我们的内部rails应用程序,更新密码,将应用程序推送到网络服务器并重新启动乘客。

我们将密码作为CONSTANT存储在环境文件中,还有一些特定于Web的常量。我们希望将此责任转移给客户服务经理,以便她每30天更新一次密码,在应用程序中转到一个小表单并更新密码。

存储该密码的最佳方法是什么?我们显然不能在环境文件中执行CONSTANT并继续重新加载应用程序。但同时创建一个模型来在一个单独的表中存储一个密码似乎是一种过度杀伤,因为应用程序的一部分向供应商网站发出请求 - 每天大约需要1000个请求,并且需要非常快,这意味着每次发出请求时,将该密码存储在表中都需要额外的查询。当然对于我们的音量而言,这不是什么大问题,但从理论上来说,除了做我们现在做的事情之外,什么是这个问题的最佳\有效解决方案,在应用启动时将其加载到内存中?

1 个答案:

答案 0 :(得分:2)

将(加密)密码存储在平面文件中。通过信号或auth故障重新加载文件,或者自上次重新加载并且文件的时间戳已更改超过10秒后重新加载文件。将此逻辑包含在.getCredentials()之类的单个方法中。大多数情况下,它只会返回缓存的登录名和密码值。

将它存储在适当的数据库中对我来说看起来有点过分。