我有一个有效的身份验证,可以通过表用户来识别用户。
但是在这张表中我有布尔字段(“correct”=> true / false)
我如何能够对仅具有“已纠正:真实”字段的用户进行认证。
我尝试覆盖方法创建(在此文本下),但我不明白如何准确地做到这一点。
def create
self.resource = warden.authenticate!(auth_options)
set_flash_message(:notice, :signed_in) if is_navigational_format?
sign_in(resource_name, resource)
respond_with resource, :location => after_sign_in_path_for(resource)
end
THN!
答案 0 :(得分:0)
如果要覆盖create操作,则必须按用户名创建单独的控制器并添加要覆盖的操作。为我们生成模型和视图,但没有任何控制器。因此,如果要覆盖任何操作,只需创建控制器并添加操作。
答案 1 :(得分:0)
我只需要添加另一个字段来验证身份验证。 我解决了我的任务: 在Devise我重写方法:
def self.find_for_authentication(tainted_conditions)
super(tainted_conditions.reverse_merge(type: 'User'))
end
最终版本。
下一个方法链接 - 在英雄开始会话时使用:
find_for_database_authentication: https://github.com/plataformatec/devise/blob/master/lib/devise/models/database_authenticatable.rb#L135
find_for_authentication: https://github.com/plataformatec/devise/blob/master/lib/devise/models/authenticatable.rb#L241
find_first_by_auth_conditions: https://github.com/plataformatec/devise/blob/master/lib/devise/models/authenticatable.rb#L245