Sidekiq 화면 액세스를 제한하는 방법 3가지 선택

5665 단어 RailsRubysidekiqtech
BASIC 인증 및 Device를 사용하는 방법을 자주 볼 수 있습니다.
자신이 준비한 인증 기능으로 Sidekiq의 화면 접근을 제한하는 방법에 대한 정보를 찾지 못해 메모로 남겨뒀다.
Rails에서 비동기 처리 시 Sidekiq를 사용하는 경우
Sidekiq에서 준비한 관리 화면을 루트에 설치할 수 있을 것 같습니다.
require 'sidekiq/web'

Rails.application.routes.draw do
  mount Sidekiq::Web, at: '/sidekiq'
end
그러나 정식 촬영 환경에서도 제3자는 똑같이 확인하고 싶은 이 화면을 방문할 수 없다
인증하는 게 좋을 것 같아서요.

1. BASIC 인증 사용 방법


이 방법을 사용한다면 환경 변수 등을 사용하세요.
require 'sidekiq/web'

Rails.application.routes.draw do
  Sidekiq::Web.use(Rack::Auth::Basic) do |user, password|
    [user, password] == ['user', 'password']
  end
end

2. Device 사용 방법


사용authenticated은 간단합니다.
authenticate :user do #authenticate
  mount Sidekiq::Web => '/sidekiq'
end

3. 현재 인증 기능(세션 사용 방법)


constraints를 사용하면 좋은 느낌을 얻을 수 있습니다.
예를 들어 Admin 모델의 세션admin_id에서 인증된 기능인 경우
아래의 실현에서 실현할 수 있다.
class AdminAuthConstraint
  def matches?(request)
    return false if request.session[:admin_id].blank?

    Admin.exists?(request.session[:admin_id])
  end
end

Rails.application.routes.draw do
  mount Sidekiq::Web => '/sidekiq', constraints: AdminAuthConstraint.new
end
다른 좋은 방법이 있다면 교수님🙇‍♂️

좋은 웹페이지 즐겨찾기