Я делаю сайт галереи. Фотографии и альбомы по умолчанию должны быть скрыты от общественности, но владелец может поделиться общедоступным URL, если он хочет. Я также хочу использовать короткие URL для этого.
Я пытаюсь найти лучший способ сделать это. Сначала я подумал, что у меня может быть таблица MySQL с коротким URL-кодом (что-то вроде Zneg8rjK
) и полным URL-адресом (/album/5/
). Когда пользователь посещает эту ссылку (mysite.com/Zneg8rjK
), он устанавливает переменную сеанса, которая является просто хешем /album/5
плюс соль, и затем перенаправляет их на полный URL-адрес. Затем на этой странице я могу просто перефразировать текущую страницу и проверить, находится ли она в своей сессии или нет. Нет проблем ... но что происходит, когда они нажимают на фотографию в этом альбоме? Он ломается.
Итак, следующее решение, о котором я подумал, было то, что я должен хранить секретный ключ с каждым альбомом и каждой фотографией, а затем иметь публичный адрес, такой как /album/5/secretkey
. Короткий URL может просто указывать на это. Но тогда как я могу дать пользователю разрешение на просмотр всех фотографий в альбоме? Должен ли я просто связать каждую фотографию, чтобы она указала на секретную версию URL фотографии, но только если они получили доступ к альбому по секретному URL-адресу альбома? Меня беспокоит то, что я хочу как можно больше хранить секретные ключи / URL-адреса вне адресной строки, чтобы пользователи случайно не делились ею с людьми, которых они не должны ... но это не так важно, если их нет. т любые лучшие решения.
Мысли
Подождите секунду, мне вообще нужно хэшировать URL? Для клиентов нет способа изменить переменные сеанса?