On: April 02, 2020
Basic authen for mount route in rails app!
Problem
- Mình sẽ có một số trường hợp dùng mount route, như docs, sidekiq, rails-admin.
# route.rb
unless Rails.env.production?
mount Rswag::Ui::Engine => '/api-docs'
mount Rswag::Api::Engine => '/api-docs'
mount Sidekiq::Web => '/sidekiq'
end
Solution (cho trường hợp dùng rswag)
Đối với trường hợp user cần phải login
- thì sẽ rất dễ, chỉ cần authen với Devise gem là được . Nếu chưa login sẽ redirect tới màn login.
# route.rb
authenticate :user, ->(user) { user.admin? } do
mount Sidekiq::Web => '/sidekiq'
end
Đối với những trường hợp không có login, làm sao authen
- mong muốn có thể show popup nhập username/password kiểu basic authen
- Dùng constraint (vẫn chưa tìm được cách)
Tagged with rails