У меня есть Sidekiq, смонтированный в файле маршрутов на конечную точку /sidekiq
.Перенаправление запроса в ограничение маршрутизации
Я использую параметр constraints
, чтобы он вызывал внешний класс для проверки как способ предотвращения доступа к этой конечной точке пользователям, не имеющим права доступа.
# 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
Эта установка отлично работает. Тем не менее, это только позволяет мне вернуть true
/false
о том, должен ли проходить запрос или нет. Это не позволяет мне -
- Установите флэш-сообщение (например, «Вы не имеете права доступа к этой странице») и
- переадресации произвольной странице
В этом смысле, я m ищет, чтобы он больше походил на контроллер before_filter
.
Есть ли способ изменить объект request
, который был передан для реализации этого перенаправления?
Спасибо!
Этот ответ был полезен для меня: https: //stackoverflow.com/a/19649787/718180 – vergenzt