LINUX.ORG.RU

Подскажите «батарейку» для создания временного случайного урла на ресурс

 ,


0

2

Разыскивается ${subject}, который бы делал доступными ресурсы на некоторое время через ссылку вида

http://1.ru/586efc7cce834a6d81c25c184d72ca90/file.zip

самое близкое что нашел это, что s3 имеет(имел) сию фичу в бажнутом виде

★★★★★

Что-то непонятно, чего ты хочешь. Что за ресурсы, кто будет создавать ссылки, доступны ли они по другим урлам и т.д.

Apple-ch ★★
()
Ответ на: комментарий от Apple-ch

Что за ресурсы

файл, который создан специально под конкретного пользователя

кто будет создавать ссылки

надеялся что есть такой гем, который будет делать всю магию. теперь видимо придется писать под себя

доступны ли они по другим урлам

в том то и дело что нет

и т.д.

какие еще нужны уточнения?

ZuBB ★★★★★
() автор топика
Ответ на: комментарий от ZuBB

Т.е. доступен он будет только этому пользователю?

В любом случае, плохая новость в том, что готового решения, скорее всего, нет. Хорошая: это пишется минут за 10 минут :)

Apple-ch ★★
()
Ответ на: комментарий от ZuBB

Идейка по оптимизации

Если пользователь как бы сам создаёт файл, то можно сделать таким образом: генерировать ссылку и сохранять её в кэш вместе с кукой юзера:

personal_url = random_string + '/' + filename
Rails.cache.write("#{cookies[:user_token]}/personal_url", expires_in: 1.day)

И в конфиге нгинкса для урлов заданного вида, имея на руках куку, находить нужный ключ и слать файл. В противном случае рендерить 404.

Apple-ch ★★
()
Ответ на: Идейка по оптимизации от Apple-ch

Если пользователь как бы сам создаёт файл

возможно я вас непонял, но нет. файл генерится на сервере, после того как юзер засабмитил форму

ZuBB ★★★★★
() автор топика

Создавай в /public симлинки на папку, где лежит file.zip, симлинки называй 586efc7cce834a6d81c25c184d72ca90, раз в какое-то время убивай симлинки.

Alve ★★★★★
()
Ответ на: комментарий от ZuBB

Для быстрой раздачи статики: файлы раздаются только нужным пользователям напрямую, не затрагивая бэкенд вообще.

Если у тебя его нет (что не очень хорошо), то для тебя этот совет неактуален.

Apple-ch ★★
()
Ответ на: комментарий от Alve

Красивое решение, но если я правильно понял нужна авторизация.

Apple-ch ★★
()
Ответ на: комментарий от Apple-ch

Для быстрой раздачи статики

у меня ее нет. это очень мелкий апп

ZuBB ★★★★★
() автор топика
Ответ на: комментарий от ZuBB

желательно, пока судя по всему будет и так

ZuBB ★★★★★
() автор топика

Если ещё актуально.

Есть база данных, четыре столбца: тикет (на всякий случай уточню, по этому столбцу нужен индекс), пользователь которому принадлежит тикет, время устаревания, путь к файлу в файловой системе (или другой указатель по которому можно получить файл, если файлы совсем маленькие то можно их класть прямо в БД).
Есть программка которой передаётся тикет и имя пользователя передавшего этот тикет GET запросом, находит этот тикет в БД, проверяет что он принадлежит тому-же пользователю который его передал, проверяет что он не устарел, если всё правильно то передаёт файл пользователю (так-же как сгенерированные странички например).

Это конечно совсем не оптимальный способ, просто решение в лоб. Вариант с nginx лучше, статические файлы нужно отдавать вообще не дергая бэкэнд.

MrClon ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.