Как не дать пользователю дважды щелкнуть ссылку в электронном письме? - PullRequest
0 голосов
/ 15 марта 2019

Когда пользователи запрашивают сброс пароля, они получают электронное письмо со ссылкой для генерации кода сброса пароля. Эта ссылка действительна в течение 24 часов и может быть повторно использована в течение 24 часов для генерации нового кода, если первый потерян или забыт. Когда пользователи дважды щелкают ссылку, генерируются два кода, что приводит к путанице среди пользователей в отношении использования (второй код делает недействительным первый код в соответствии с тем, как он был разработан).

Поскольку ссылка в электронном письме представляет собой всего лишь тег HTML, я не уверен, как удержать пользователей от двойного нажатия на ссылку.

1 Ответ

0 голосов
/ 16 марта 2019

Звучит так, как будто вы столкнулись с проблемой XY .Ваша настоящая проблема заключается в том, что пользователи путаются в результате быстрых переходов, в результате чего только что созданный код становится недействительным, а не из-за того, что ссылку можно щелкнуть дважды.

С точки зрения безопасности,ссылки такого рода действительно должны быть одноразовыми, и пользователь должен запросить новое электронное письмо, если он хочет снова выполнить действие.Предполагая, что это то, что вы вынуждены делать, я считаю, что лучшим компромиссом будет ограничение генерации кода временными рамками, поэтому посещения в течение, скажем, 5-10 секунд приведут к тому, что тот же код будет показан пользователю,на основе времени сервера.

Внедрение любого решения на основе CSS для этого, которое работало бы на любом почтовом клиенте, достаточно сложно (если вообще возможно), и я сомневаюсь в любом уважающем себя электронномпочтовый клиент позволит вам запустить любой JavaScript-код для перехвата события.

Следующее работает в современном браузере на реальной веб-странице, но это не просто плохая идея Это также, вероятно, не будет работать, если вы попытаетесь использовать его в электронной почте.Я предоставляю его здесь только для полноты картины, показывая, что это несколько возможно, но, пожалуйста, не полагайтесь на это, чтобы исправить основную проблему.

<style>a:focus { pointer-events: none }</style>
<p>This is some text, here's <a href="#try-me">a link</a> you can't double click by the way.</p>
...