ZetIndex_Ram
@ZetIndex_Ram

Что делать, если совпадут два случайных токена (Str::random Laravel или через нативный Php)?

Здравствуйте, коллеги.

У меня в проекте есть поле api_token (которое я еще выставил, чтобы уникальное было), которое генерируется с помощью Str::random(60). Я вот задумался, могут ли токены совпасть? Ведь Str::random не проверяет на уникальность.

Стоит ли бороться с этим? Или одну ошибку стоит отдать на съедение?
  • Вопрос задан
  • 124 просмотра
Пригласить эксперта
Ответы на вопрос 3
Sanes
@Sanes
Добавьте уникальный префикс. Например microtime.
Даже без префикса вероятность коллизии ничтожна. В крайнем случае получите исключение из базы или от валидатора.
Ответ написан
Комментировать
Big_Alex
@Big_Alex
молод и перспективен
Не самое лучшее решение генерить токены Str::random, но ладно..
Просто проверяйте токен на уникальность перед сохранением в БД.. )))

И да. Не забудьте написать обработчик ошибки.. ( хотя это уже паранойя )
Ответ написан
@jazzus
Str::random действительно может выдавать неуникальные значения и в 60 символов. И добавка времени может не спасти (например при инсертах в сидинге/тестах). С Str::uuid() таких проблем не возникало.
Str::uuid()->toString()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы