我试图覆盖并删除
:设计密码控制器中的require_no_authentication。
class Devise::PasswordsController < DeviseController
prepend_before_filter :require_no_authentication
使用:
class Users::PasswordsController < Devise::PasswordsController
skip_before_filter :require_no_authentication
但是这不起作用,原因是我想使用密码控制器中的编辑方法来获得自定义逻辑。我想在用户登录时更新用户密码。
是否有正确的方法以某种方式禁用此prepend_before_filter?
答案 0 :(得分:2)
我已经有几天的问题了。这个帖子解决了他们,我希望它也能帮到你.. https://github.com/plataformatec/devise/issues/2811
基本上我们需要覆盖authenticate_your_model!方法,因为有一个检查禁用每个设备控制器的身份验证。所以只需删除skip_before_filter并添加如下私有方法:
private
def authenticate_your_model!(opts={})
opts[:scope] = :system_manager
warden.authenticate!(opts) # if !devise_controller? || opts.delete(:force)
end