You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sidekiq 8.0.3是否可禁用Flash消息?Web UI需隐藏OmniAuth提示

如何禁用Sidekiq Web UI中OmniAuth的Flash消息展示

当然可以禁用,这里有两种可靠的实现方式:

  • 自定义Rack中间件过滤Flash消息
    这种方法最通用,不需要修改OmniAuth或Sidekiq的核心逻辑,只需要在挂载Sidekiq Web时添加一个中间件,专门清除OmniAuth相关的Flash内容:

    # 在config/initializers/sidekiq.rb(或类似初始化文件)中添加
    class ClearOmniAuthFlash
      def initialize(app)
        @app = app
      end
    
      def call(env)
        session = env['rack.session']
        if session&.dig('flash')
          session['flash'].delete_if { |key, _| key.start_with?('omniauth') }
        end
        @app.call(env)
      end
    end
    
    require 'sidekiq/web'
    Sidekiq::Web.use ClearOmniAuthFlash
    
    # 如果你用Rails,路由里正常挂载即可
    Rails.application.routes.draw do
      mount Sidekiq::Web => '/sidekiq'
    end
    
  • 修改OmniAuth的回调/失败处理逻辑
    如果你只需要在Sidekiq的认证流程中隐藏Flash,可以直接调整OmniAuth的配置,避免生成或传递这些消息:

    # 在OmniAuth初始化配置中添加
    OmniAuth.config.on_failure = Proc.new do |env|
      # 清除session中的Flash消息
      env['rack.session'].delete('flash') if env['rack.session']
      # 重定向回Sidekiq登录页
      Rack::Response.new([''], 302, 'Location' => '/sidekiq').finish
    end
    
    # 如果是成功回调,也可以在处理完认证后手动清除Flash
    def omniauth_callback
      # 你的认证逻辑...
      session.delete('flash')
      redirect_to '/sidekiq'
    end
    

注意:不建议直接修改Sidekiq的Web模板文件,因为Sidekiq升级后会覆盖这些修改,维护成本高。

内容的提问来源于stack exchange,提问作者Charles Bandes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 02:48:15