我是新手。我想问问是否可以插入加密的密码(使用devise默认加密进行加密)来设计模型?
例如:
User.csv id,name,encrypted_password 1,dude,$2a$10$0.xEu5LvDbnmGVIqgIab8ej5o2b3eKa8KLevsg5bxIX0SHSOl5gye
我想读取此csv文件,然后将数据插入到用户模型中。但是我意识到您通常无法在encrypted_password
用户模型上插入已经加密的密码。我正在考虑解密密码,但他们说这对系统的安全性有害。
更新:它现在可以插入加密的密码,但是插入的密码与csv上的密码不同,因为该设备在将密码插入数据库之前会自动对其进行加密。设计模型是否有办法在将密码插入数据库之前检测密码是否已加密?
是的,您可以直接设置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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句