Как стать автором
Обновить

Комментарии 17

Если есть возможность, сессии лучше хранить в Redis или аналогичных.
Это не про сессии :-) В конце ссылка :-)
Ну прочитайте сессии для одноразовых ссылок.
Да где угодно. Я в конце добавил, что концептуальное различие в том, что мы не зацикливаемся ни на каких пользовательских данных, а токен абсолютно рандомный.
Далеко не всегда это необходимо.
Строка 24 не до конца ( с mc копировали? :) )
Да и как то одного типа придерживаться, а то в одном месте есть ":", а в другом нету.
опс, как оказалось всё есть. Разметка страниц у хабра такая, строка длинная — скрывает под дивом (сорь)
Очевидное решение.
Правильно. Очевидное и простое.

Я тут просто выступаю в роли КО, чтобы немного разбавить тот «неочевидный» топик :-)

Зачем усложнять до того, как это потребуется? :-)
Обычно использую что-то похожее, только вместо «DELETE FROM one_time_auth » делаю UPDATE — сохраняю нужную информацию о человеке (дата, IP и т.д.) и ставлю переключатель типа active enum(y,n) в 'n', чтобы сессия действительно была одноразовой.
И в вашем случае в DELETE просится первичный ключ (банально ID с autoincrement), запрос выполнится быстрее.
token и есть PK, смотрите на схему.
token можно сделать обычным ключом (чисто теоретически даже с md5 возможен повтор), добавить первичный ключ типа int (с autoincrement) и для delete использовать его. Что-то мне подсказывает, что на больших таблицах поиск по короткому int будет заметно быстрее поиска по строке token
Пускай будет повтор — я ловлю эксепшн и пытаюсь добавить новый случайный токен: строки 29-36.

По поводу поиска — на примерно нескольких десятках миллионов разница настолько несущественная, что я бы не стал всё таки вводить суррогатные данные, когда у нас есть такие удобные естественные.
> чисто теоретически даже с md5 возможен повтор

Чисто практически даже у четвертинки от MD5 повторы — единицы на миллионы.
Так что длину токена можно уменьшить сильно, если не требуется огромного числа одновременных ссылок с авторизацией.
А вообще с UPDATE клёвая идея. Но цель этого поста выражена в PS и PPS. Это не готовое решение, это просто информация к размышлению и утверждение о том, что «рандомный токен» — это хорошо :-)
Разумеется. Я просто поделился своей идеей-дополнением.
И да, в реальной жизни не всегда нужен 32-символный ключ. Даже 8-символьный ключ подобрать брутфосом практически невозможно, зато ссылка будет выглядеть короче и симпатичнее.
Если учесть, что такая ссылка не для красоты, а для дела — то совершенно не страшно. Вон в платёжных системах вообще урлы длиной сотни знаков, и ничего :)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории