禁用prepend_before_filter:require_no_authentication for devise passwordcontroller?

时间:2015-06-24 14:50:43

标签: ruby-on-rails devise

我试图覆盖并删除

:设计密码控制器中的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?

1 个答案:

答案 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