【问题标题】:Validate password on change of certain fields in RoR在更改 RoR 中的某些字段时验证密码
【发布时间】:2011-02-22 10:16:18
【问题描述】:

我正在构建一个 RoR 3 应用程序,一个社区。它有一个用户模型和一些字段。

因此,当用户更新某个字段(例如他/她的生日)时,我想验证用户输入的密码是否与数据库中的密码相同。这样我就知道尝试更改生日是正确的用户。

所以我问你如何创建这样的验证器。

我还希望能够指定一个数组,其中包含用户必须验证密码才能更改的字段。

【问题讨论】:

    标签: ruby-on-rails validation


    【解决方案1】:

    一旦您熟悉了 Rails 框架,这实际上很容易做到。

    模型/用户.rb
    class 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
    

    【讨论】:

      【解决方案2】:

      即使构建用户身份验证和授权并不难——我建议使用“AuthLogic”或“Devise”gems/plugins 之类的东西,它们很可能涵盖您需要的 90% 的功能。如果需要,您还可以自定义/添加新功能。

      此类插件将为您完成大部分繁重的工作:生成 MVC、创建数据库、进行适当的安全检查,甚至电子邮件密码恢复等。

      【讨论】:

      • 我想自己做:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      • 2014-07-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多