Если вы хотите быстро с этим справиться, и это не то, чем вы хотите заниматься для развлечения, а что-то, что вам нужно интегрировать в свой проект, то я бы go с OAuth или аналогичный пакет, который уже существует.
В противном случае:
- Рекомендуется убедиться, что ваш токен уникален. Вы можете установить поле для таблицы как уникальное, поэтому, когда вы попытаетесь сохранить его, но оно существует, вы получите сообщение об ошибке и можете сгенерировать другое. (1) ИЛИ вы можете создать алгоритм, который будет гарантировать что токен не существует в базе данных. Для этого вы можете использовать временную метку и, возможно, идентификатор пользователя для токена ha sh алгоритм.
Например:
$token = md5(uniqid(mt_rand(), true));
Почему хорошо не разрешать токены для дублирования?
Если в вашей базе данных есть пользователи, администраторы и клиенты обычно хранятся в одной и той же таблице пользователей. Разница между ними заключается в ролевом поле, которое определяет, являются ли они гостями, клиентами, администраторами, назгулами, дементорами и т. Д.
Допустим, администратор получил токен (123), а позже - другой. user - возможно, клиент получит такой же токен (123). В этом случае, если вы проверяете разрешения на конечной точке API для запроса, вы должны сохранить идентификатор пользователя вместе с токеном, а во время проверки разрешений вам также необходимо добавить дополнительное условие для проверки идентификатора пользователя, в противном случае клиент может получить токен администратора и с его помощью получить доступ к конечным точкам / функциям администратора.
Это также возможно, если вы не очистите старые токены сразу после истечения срока их действия, что во время разрешения проверьте чекер вернется с устаревшим токеном, поэтому пользователю будет отказано в разрешении.
Так что это не обязательно, но проще.
Для истечения срока действия токена у вас есть 3 варианта. Это следующие:
- Кратковременные токены доступа и долгоживущие refre sh маркеры
- Кратковременные маркеры доступа и без refre sh токены
- Нет токены доступа с истекающим сроком действия
подробнее о них можно прочитать здесь