Welcome! Log In Create A New Profile

Advanced

Re: HttpAccessKeyModule или HttpSecureLinkModule

Андрей Урядов
July 04, 2013 06:22AM
Не понял в данном случае, зачем надо что-то передавать в ссылку после
file.zip. Ссылка для всех одна, а проверка уже идет из того, есть ли кука
соответствующая.
Например, выставляем при авторизации куку is_authorized в 1. И проверяем:
if($http_cookie ~* '^(.*)is_authorized=1(.*)$')
....тогда отдаем нормально
Иначе - 404.

>>А что-то посложнее можно придумать?
Посложнее в реализации? Зачем? :))

А вы случайно не файлообменник делаете? Ну т.е. обычный обмен файлами с
ограниченным доступом (чтобы скачивали не все, а только определенные люди)?
Если так, то проще сделать следующим образом (объясню саму идею, без
конкретной реализации). У вас есть кнопка, на которую человек может нажать,
чтобы получить право пользоваться файлом. Запускается скрипт, который
решает, можно ли ему этот файл получить или нет (например, заплатил ли он
за него или достаточно ли других прав - чистая бизнес-логика). Этот скрипт,
если человеку можно файл отдать, создает проверочный файлик вида
<ip_человека-сгенерированный_хэш>.
А в location, который эти файлы отдает, ставите проверку (примерно такую):

set $fileName '';
set $secretKey '';
if ($request_uri ~* ^/path_to_files/([0-9a-z]+)/(.+)$) {
set $fileName $2;
set $secretKey $1;
}
set $rightKey 0;
if (-f /path_to_download_keys/download_key/$remote_addr-$secretKey) {
set $rightKey 1;
rewrite ^(.*)$ /path_to_files/$fileName break;
}
if ( $rightKey != 1) {
return 404;
}

Клиенту отдаете ссылку /path_to_files/<$secretKey>/<filename>. Здесь
$secretKey - это сгенерированный хэш из имени проверочного файлика.

И ссылки будут работать для данного ip, неважно, качается ли файл браузером
или download-клиентом, до тех пор, пока существует файлик. Если надо
ограничивать по времени, можно грохнуть проверочный файлик по расписанию.
Если зайти на этот файл, не посещая соответствующую страницу, получишь 404.



4 июля 2013 г., 11:41 пользователь shurik_saint <nginx-forum@nginx.us>написал:

> Т. е.
> для accesskey_signature выставляем что-то вроде "$cookie_issignedin",
> для всех залогиненых ставим куку issignedin, например, в "yes",
> и раздаём ссылки вида
> http://example.com/download/file.zip?key=09093abeac094, где
> "09093abeac094"
> -- это заранее известный хэш куки issignedin.
> Правильно я понял?
>
> А что-то посложнее можно придумать?
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?21,240549,240574#msg-240574
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

HttpAccessKeyModule или HttpSecureLinkModule

shurik_saint July 03, 2013 02:38PM

Re: HttpAccessKeyModule или HttpSecureLinkModule

Андрей Урядов July 04, 2013 03:26AM

Re: HttpAccessKeyModule или HttpSecureLinkModule

shurik_saint July 04, 2013 03:41AM

Re: HttpAccessKeyModule или HttpSecureLinkModule

Андрей Урядов July 04, 2013 06:22AM

Re: HttpAccessKeyModule или HttpSecureLinkModule

Gena Makhomed July 04, 2013 07:20AM

Re: HttpAccessKeyModule или HttpSecureLinkModule

shurik_saint July 08, 2013 03:16PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 298
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready