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
相关产品推荐
相关产品推荐

