Я хотел бы разрешить доступ к ActiveStorage
вложениям и, глядя на исходный код BlobsController
(https://github.com/rails/rails/blob/master/activestorage/app/controllers/active_storage/blobs_controller.rb), указано следующее:
# Take a signed permanent reference for a blob and turn it into an expiring service URL for download.
# Note: These URLs are publicly accessible. If you need to enforce access protection beyond the
# security-through-obscurity factor of the signed blob references, you'll need to implement your own
# authenticated redirection controller.
class ActiveStorage::BlobsController < ActiveStorage::BaseController
include ActiveStorage::SetBlob
def show
expires_in ActiveStorage.service_urls_expire_in
redirect_to @blob.service_url(disposition: params[:disposition])
end
end
Но даже примечания вышеПредлагаю создать собственный контроллер. Мне также необходимо переопределить маршруты, сгенерированные ActiveStorage, поскольку они указывают на исходные контроллеры, и переопределение их на моем routes.rb
, похоже, вызывает исключение. Также я не хочу показывать этимаршрутов больше, поскольку они не авторизуются, и кто-то может взять signed_id
большого двоичного объекта и получить вложение, используя исходную конечную точку. Цикл по маршрутам при инициализации приложения и удаление старых маршрутов ActiveStorage и вставка новых кажется лучшимрешение на данный момент, но я бы хотел избежать этого.
Есть предложения? 101