【问题标题】:Devise extensions (module) order设计扩展(模块)顺序
【发布时间】:2018-03-13 00:36:44
【问题描述】:

我编写了一个设计扩展,它有一个钩子 Warden::Manager.after_authentication do |user, auth, options| 并在身份验证时更新资源。

我正在使用一个两因素身份验证 gem,它也使用 Warden::Manager.after_authentication 钩子。我的问题是我需要我的扩展先执行它。

我尝试在 Gemfile 中重新排序 gem,在 devise :ext1, :ext2.. 中重新排序扩展并将我在本地拥有的 gem 上传到 ruby​​gems。

【问题讨论】:

    标签: ruby-on-rails ruby devise bundler gemfile


    【解决方案1】:

    Warden::Manager.after_authentication 可以采用(作为参数)方法的名称,用于向 hooks 数组添加新的钩子。默认为:pushhttps://github.com/hassox/warden/blob/fa24dcbf34022d85dce8db51dd11bbbe5a6fddcc/lib/warden/hooks.rb#L76

    您需要传递:unshift 才能将您的钩子插入到开头。

    Warden::Manager.after_authentication({}, :unshift) do |user, auth, options|
      # ...
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-04
      • 2013-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-30
      • 1970-01-01
      相关资源
      最近更新 更多