Ich habe Sidekiq in meine Routen-Datei an den Endpunkt /sidekiq
montiert.Umleiten einer Anfrage in einem Routing-Constraint
Ich verwende eine constraints
Option, um eine externe Klasse zur Validierung aufrufen zu lassen, um zu verhindern, dass nicht privilegierte Benutzer auf diesen Endpunkt zugreifen.
# config/routes.rb
mount Sidekiq::Web => "/sidekiq", constraints: Sidekiq::AdminConstraint.new
# lib/sidekiq/admin_constraint.rb
module Sidekiq
class AdminConstraint
def matches?(request)
return false unless request.session[:user_id]
user = User.find_by_id(request.session[:user_id])
user && Ability.new(user).can?(:manage, :sidekiq)
end
end
end
Diese Einrichtung funktioniert gut. Allerdings kann ich nur true
/false
zurückgeben, ob die Anfrage durchlaufen werden soll oder nicht. Es läßt mich nicht -
- eine Flash-Mitteilung Stellen (zB „Sie sind nicht die Seite erlauben den Zugriff auf“) und
- Redirect zu einer beliebigen Seite
In diesem Sinne, ich Ich suche es sich mehr wie ein Controller before_filter
zu verhalten.
Gibt es eine Möglichkeit, das request
Objekt zu ändern, das übergeben wird, um diese Umleitung zu implementieren?
Danke!
Diese Antwort war hilfreich hinzu: https: //stackoverflow.com/a/19649787/718180 – vergenzt