В моем приложении Rails 5.2 у меня есть этот контроллер, который отправляет пользователю ссылку на скачивание с параметром token
:
class ArchivesController < ApplicationController
def new
# Create and email download link
end
def show
archive = Archive.valid.find_by(:token => params[:id]) # Check if archive is still valid or has already expired
if archive
redirect_to rails_blob_path(archive.file)
else
flash[:notice] = "Invalid link!"
redirect_to root_path
end
end
end
. Это работает и правильно перенаправляет на rails_blob_path
, который предоставляется Rails ' ActiveStorage .
Что меня беспокоит, так это то, что нажатие на ссылку загрузки не только загрузит файл, но и откроет новую (пустую!) Вкладку браузера. Я полагаю, это связано с перенаправлением в моем действии контроллера?
Есть ли способ запретить браузерам открывать пустую вкладку браузера? На мой взгляд, это не обязательно и может сбить с толку пользователя.
В предыдущей версии моего приложения я поместил rails_blob_path
непосредственно в электронное письмо, и загрузка была запущена без открытия новой вкладки браузера. Однако мне не понравился такой подход по соображениям безопасности, и не было никакого способа сделать недействительными или истек срок действия уже загруженных записей.