Я хочу разрешить доступ к 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 и вставка новых кажется лучшим решением на данный момент, но я бы хотел этого избежать.
Какие-либо предложения? ????