Rails:使用用户

时间:2015-09-13 02:07:26

标签: mysql ruby-on-rails

我想在我的rails应用程序中有一个页面,用户可以在其中输入mysql数据库的ip,用户名和密码。这些凭据安全地存储在某处,然后rails连接到数据库并可以运行一些sql语句。

我应该在哪里存储凭据以及如何使用Ruby on rails连接到该数据库?该数据库没有预定义的模型,我不需要使用活动记录建模

谢谢!

1 个答案:

答案 0 :(得分:2)

这是我的第一个想法。也许这会让你有点想法。肯定还有其他一些方法。

将数据保存在某处(在数据库中) https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet Encrypt, decrypt using Rails

所以现在你可以用保存方式设置密码User.password = "plaintext",你也可以用User.password

来接收密码
class User
  # password field is called "crypted_password"
  def password= val
   self.crypted_password = 
    ActiveSupport::MessageEncryptor.new(Rails.configuration.secret_key_base).encrypt_and_sign(val)
  end

  def password
    ActiveSupport::MessageEncryptor.new(Rails.configuration.secret_key_base).decrypt_and_verify(self.crypted_password)
  end
end
user = User.find(1337)
mysql = DatabaseConnection.new user.host, user.username, user.password
result = mysql.get_users(50)
raise result.inspect

使用gem mysql2访问mysql-databases https://github.com/brianmario/mysql2

创建DatabaseWrapper以连接到用户数据库

class DatabaseConnection

  def initialize host, username, password
    @@connection = Mysql2::Client.new host: host, username: username, password: password
  end

  end
  def run statement
    @@connection.query statement
  end

  def get_users limit=100
   run "select * from users where flag=true limit #{limit}"
  end
end