我正在構建一個RoR 3應用程序社區。它有一個用戶模型和一些字段。驗證RoR中某些字段更改的密碼
因此,當用戶更新某個字段時,如他/她的生日,我想驗證用戶輸入的密碼與數據庫中相同。這樣我就知道這是正確的用戶試圖改變生日。
所以我問你,我可以如何創建這樣一個驗證器。
此外我想能夠指定用戶必須驗證密碼更改哪些字段的數組。
我正在構建一個RoR 3應用程序社區。它有一個用戶模型和一些字段。驗證RoR中某些字段更改的密碼
因此,當用戶更新某個字段時,如他/她的生日,我想驗證用戶輸入的密碼與數據庫中相同。這樣我就知道這是正確的用戶試圖改變生日。
所以我問你,我可以如何創建這樣一個驗證器。
此外我想能夠指定用戶必須驗證密碼更改哪些字段的數組。
一旦你熟悉Rails框架,這實際上很容易做到。
型號/ User.rbclass User < ActiveRecord::Base
validate :correct_password?, :if => :check_password?
def check_password?
[birthday_changed?, other_field_changed?].any?
end
def correct_password?
# without knowing more about how you store the password
# this probably won't work with your code directly
errors.add_to_base("Must provide password") unless password?
errors.add_to_base("Incorrect password") unless password == User.find_by_id(id).password
end
end
即使構建用戶身份驗證和授權並不困難 - 我會建議使用類似「AuthLogic」或「Devise」的gem/plugins,它很可能涵蓋您需要的90%功能。如果需要,您也可以自定義/添加新功能。
這樣的插件將爲你做大部分的工作:生成MVC,創建數據庫,做適當的安全檢查,甚至電子郵件密碼恢復等。
位我希望做我自己:) – Lisinge 2010-05-21 16:31:21
這是偉大的!謝謝! – Lisinge 2010-05-21 21:35:55