1. Что я делал до сих пор
Я добавил функцию сброса пароля в свой проект, в котором пользователь получает ссылку в своем письме. Я использовал хешированный пароль пользователя в качестве секретного ключа, чтобы использовать ссылку ОДИН РАЗ. Таким образом, если пользователь меняет свой пароль один раз, то меняется ha sh, а также секретный ключ, делающий проверку токена недействительной, что, в свою очередь, приводит к тому, что ссылка ОДИН РАЗ ИСПОЛЬЗУЕТСЯ. Поскольку я использовал хешированный пароль пользователя в качестве секретного ключа, мне также необходимо передать _id
пользователя с токеном в ссылке, чтобы во время проверки токена сначала я получал пароль пользователя ha sh с помощью пользователя. _id
что я передал с токеном по ссылке.
2. Что я хочу сделать
Теперь пришло время добавить функцию проверки электронной почты в мой проект, и я не понимаю, как сделать ссылку подтверждения одноразовой ссылкой. А что если пользователи несколько раз запрашивают подтверждение по электронной почте, а я генерирую такую ссылку и отправляю ее на соответствующую электронную почту пользователя.
3. Я думал об этом
Я думал о создании базы данных для проверки электронной почты и вставлял user_Id
и token
в эту базу данных каждый раз, когда пользователь запрашивает подтверждение, и как только пользователь щелкает по любому из запрошенных ссылки Я проверяю пользователя и удаляю весь токен, связанный с user_Id
пользователя, чтобы при повторном нажатии любой ссылки или той же ссылки электронное письмо уже было проверено и токен был удален, чтобы я мог ответить "Неверная ссылка или Запрос "пользователю.
Если нет. 3 - механизм le git, который я буду реализовывать так же, как нет. 1
Если вышеупомянутый механизм имеет тип le git и подходит для go, я хотел бы реализовать то же самое для моей функции сброса пароля, чтобы мне не нужно было использовать пароль пользователя ha sh в качестве секрета а также не передавать пользователю _id
по ссылке
Просьба также дать рекомендации, если обе эти функции могут быть выполнены по-разному