我是铁杆的新手。我想问一下是否可以插入加密密码(使用设计默认加密加密)来设计模型?
例如:
User.csv id,name,encrypted_password 1,dude,$2a$10$0.xEu5LvDbnmGVIqgIab8ej5o2b3eKa8KLevsg5bxIX0SHSOl5gye
我想阅读此csv文件,然后将数据插入用户模型。
但我意识到您无法在用户模型的encrypted_password
上正常插入已加密的密码。我想解密密码,但他们说这对系统的安全性有害。
更新:它现在可以插入加密密码,但插入的密码与csv上的密码不同,因为设计会在将密码插入数据库之前自动加密密码。设计模型是否有办法在将密码插入数据库之前检测密码是否已加密?
答案 0 :(得分:0)
是的,您可以直接设置encrypted_password值:
u = User.find(1)
u.update_attribute(:encrypted_password, "$2a$10$0.xEu5LvDbnmGVIqgIab8ej5o2b3eKa8KLevsg5bxIX0SHSOl5gye")
但是你应该确保你没有设置'密码',如果这样做不会起作用,因为它会再次加密,所以
u = User.new
u.password = 'foo'
u.password_confirmation = 'foo'
u.encrypted_password = "$2a$10$0.xEu5LvDbnmGVIqgIab8ej5o2b3eKa8KLevsg5bxIX0SHSOl5gye" # this line will be ignored
u.save
u = User.new
u.encrypted_password = "$2a$10$0.xEu5LvDbnmGVIqgIab8ej5o2b3eKa8KLevsg5bxIX0SHSOl5gye" # this line will now work
u.save