Railsアプリにマウントされたsinatraアプリケーションがあります。
match "/my_sinatra_app" => MyApp, :anchor => false
/my_sinatra_app
すべてのURLでレールをフィルター処理する前に Rails を実行する方法はありますか。?
Railsアプリにマウントされたsinatraアプリケーションがあります。
match "/my_sinatra_app" => MyApp, :anchor => false
/my_sinatra_app
すべてのURLでレールをフィルター処理する前に Rails を実行する方法はありますか。?
これは古い質問ですが、Sidekiq Web で同様の問題に遭遇しました。
これを回避するには、ルート制約を使用できます。
ルート ファイルで、マウントされたアプリケーションへのルートを制限します。
require "sidekiq/web"
mount Sidekiq::Web, at: "/sidekiq", constraints: AdminConstraint.new
次に で、アプリケーションの認証に適用できる にAdminConstraint
ある呼び出しを行う必要があります。before_filter
たとえば、 my に次のものがあったとしますApplicationController
。
class ApplicationController < ActionController::Base
before_filter :authenticate
def authenticate
user = User.find_by(email: params[:email])
if user && user.authenticate(params[:password])
session[:user_id] = user.id
end
end
end
私は制約に以下を入れます:
class AdminConstraint
def matches?(request)
return false unless request.session[:user_id]
user = User.find(request.session[:user_id])
# Only show if user is a super admin
user.present? && user.super_admin?
end
end