Какой подход можно / нужно использовать для изменения пароля, учитывая требования, которым я должен следовать? - PullRequest
1 голос
/ 21 ноября 2010

Мне нужно предоставить функциональность для сброса пароля пользователя на нашем веб-сайте asp.net.

Для этого пользователь должен указать адрес электронной почты, с которым он зарегистрирован, а функциональность должна сбросить пароль, который он забыл, что достаточно просто.

Сложная задача - принять во внимание модель членства сайта (не использует стандартные AspnetMembershipProviders). Сайт использует собственную систему обработки пользователей.

Точка опоры этого вопроса о требованиях, которые мне были предоставлены, и которым я должен следовать, а именно:

1) User can enter email address to reset password
2) the password that is sent to the email address provided
3) the temporary password must be valid for no more than 24 hours
4) the email will provide the link to allow them to enter the temporary password
5) when they log in they must be prompted to reset to a permanent password
6) the temporary password must be single use

Для пункта 3. коллега предложил использовать задание SQL для автоматизации ограничения времени, но я не совсем уверен, как это будет работать или это лучший подход.

Для пункта 6 я думал об использовании триггера для аннулирования временного пароля, когда он использовался для входа в систему, чтобы в случае повторной попытки им пришлось бы снова пройти весь процесс.

3 и 6 - это те части, о которых я хотел бы подумать, также, объясняя свой ответ, вы можете попытаться указать, почему это следует сделать, используя предписанные методы, чтобы я мог лучше определить, какой ответ наиболее соответствует моим требованиям.

1 Ответ

2 голосов
/ 21 ноября 2010
3) the temporary password must be valid for no more than 24 hours

Это то, что я бы сделал. Когда человек просит сбросить пароль, сгенерированный системой пароль будет обновлен в таблице базы данных. Эта таблица имеет столбец LastModified, а также столбец IsSystemGeneratedPassword, оба из которых будут установлены соответственно на datetime и true соответственно. Затем, когда пользователь пытается войти в систему, если IsSystemGeneratedPassword истинно, тогда я сравнил бы LastModified с текущей датой и нашел бы истекшее время. Если он превышает лимит (в вашем случае 24 часа), вход в систему запрещен. Пользователю сообщают об окончании срока действия временного pwd и снова перенаправляют на страницу сброса пароля.

6) the temporary password must be single use

Когда пользователь входит в систему с помощью шага 3, описанного выше, и может успешно войти в систему, поскольку IsSystemGeneratedPassword имеет значение true, пользователь должен быть перенаправлен на страницу смены пароля, где он меняет ее на один из своих вариантов. Нет варианта При изменении пользователем для IsSystemGeneratedPassword будет установлено значение false.

Этот подход не предусматривает пакетных заданий для аннулирования значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...