【问题标题】:Run certain callback on authentication failure with Devise使用 Devise 在身份验证失败时运行某些回调
【发布时间】:2014-02-04 15:58:52
【问题描述】:

我正在尝试实现这个场景:

当用户认证失败时,我会给他一张大脸。

如何使用Devise 做到这一点? 我有一个肮脏的解决方案,比如在<% flash %> 中找到错误消息,这真的很糟糕。有没有更好的办法?比如在一些控制器中设置一个变量等等。谢谢。

【问题讨论】:

    标签: ruby-on-rails authentication devise callback customization


    【解决方案1】:

    1.在你的lib目录中创建一个custom_failure.rb,其中:

    class CustomFailure < Devise::FailureApp
      def redirect_url
        your_path
      end
    
      def respond
        if http_auth?
          http_auth
        else
          redirect
        end
      end
    end
    

    2.在你的设计初始化器中,包括:

    config.warden do |manager|
      manager.failure_app = CustomFailure
    end
    

    3.确保 Rails 已加载到您的 lib 文件中,在您的 application.rb 中:

    config.autoload_paths += %W(#{config.root}/lib)
    

    然后重启你的服务器。

    【讨论】:

    • 这将创建一个重定向并完全绕过 session/new.html.erb,不是吗?我已经在 SO 中看到了这个答案,但我实际上是在问如何覆盖一些控制器,以便我可以将一些 @variable 传递给 session/new.html.erb。
    • 这里也一样;能够处理失败会很棒
    猜你喜欢
    • 1970-01-01
    • 2020-10-29
    • 2018-11-02
    • 2020-03-17
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多