#c# #asp.net #asp.net-mvc
#c# #asp.net #asp.net-mvc
Вопрос:
Я использую asp.net поставщик членства для управления пользователями. У меня есть требование заблокировать учетные записи пользователей на 30 минут после 5 неудачных попыток. Как я должен это сделать с помощью asp.net поставщик членства на стороне сервера?
Также я хочу, чтобы «Срок действия паролей истекал через 3 месяца», «Последние 10 использованных паролей должны быть запомнены». Есть ли какой-либо способ решить эти требования.
Ответ №1:
Для первого требования поставщик членства предлагает свойство maxInvalidPasswordAttempts, которое вы можете использовать в сочетании со свойством PasswordAttemptWindow.
Второе требование, насколько мне известно, потребует от вас настройки поставщика членства. Насколько мне известно, поставщик базового членства не сохраняет предыдущие пароли или не имеет принудительного сброса пароля. Однако это можно было бы сделать, если вы сами создадите пользовательского поставщика.
Начальный материал для создания пользовательского поставщика членства
Ответ №2:
если вы используете SqlMembershipProvider
, то используйте
maxInvalidPasswordAttempts
за попытки
passwordAttemptWindow
для блокировки на указанный период
нет опции для истечения срока действия пароля или истории паролей
но если вы используете ActiveDirectoryMembershipProvider
, то используйте
maxInvalidPasswordAttempts
за попытки
passwordAnswerAttemptLockoutDuration
для блокировки на указанный период
и настройте политику своего домена на предмет истечения срока действия пароля или истории паролей
полная информация здесь
http://msdn.microsoft.com/en-us/library/ff648345.aspx#paght000022_usingthesqlmembershipprovider
Комментарии:
1. Объект MembershipUser имеет свойство LastPasswordChangeDate, которое позволяет проверить срок действия пароля после входа пользователя в систему. Однако это не решает проблему истории.
2. passwordAttemptWindow предназначен для проверки неверного пароля. Это не период блокировки. Ссылка: msdn.microsoft.com/en-us/library /…
Ответ №3:
ASp.Поставщик сетевого членства не предоставляет встроенной поддержки для ваших требований, тем не менее, вы можете достичь их, выполнив некоторую пользовательскую работу.то есть
- Вы можете запланировать задание, которое разблокирует все заблокированные учетные записи пользователей каждые 30 минут.
- В вашем приложении вы можете установить флажок, если последующие входы в систему пользователя разнятся на 3 месяца, пользователь должен быть перенаправлен на страницу смены пароля.
- Последние 10 паролей пользователя могут храниться в другой таблице, для которой вам нужно написать некоторый код для изменения функциональности пароля.
Комментарии:
1. 1. Что, если пользователь был заблокирован через 29 месяцев после последнего задания расписания?
Ответ №4:
Создайте пользовательского поставщика членства. Там Вы можете реализовать всю необходимую функциональность, смотрите пример:http://msdn.microsoft.com/en-us/library/44w5aswa.aspx
Ответ №5:
вы можете выполнять все вышеупомянутые функции, создавая соответствующие таблицы в базе данных. т.е.,
-
создайте одну таблицу для хранения количества неправильных попыток, увеличьте количество при возникновении неправильной попытки на основе первичного ключа, то есть имени пользователя, в течение 5 попыток, если он успешно войдет в систему, затем попытайтесь сделать это количество равным нулю
-
При блокировке пользователя после 5 неудачных попыток сохраните время и напишите один скрипт для непрерывной проверки этого времени, когда он встретит 30-минутный метод разблокировки вызова
-
Для пароля также учитывается количество дней, т. Е. с измененной даты, каждый раз, когда пользователь входит в систему после проверки подлинности пользователя, проверяйте количество дней пароля, если оно превышает 3 дня, предлагайте им изменить
-
Если вы используете имя пользователя в качестве первичного ключа, создайте еще одну таблицу для хранения максимум 10 паролей для каждого пользователя, при вставке пароля в эту таблицу (когда пользователь меняет свой пароль), проверьте таблицу на количество строк для этого пользователя, если это 10, то на основе последней меньшей даты вы можете удалить эту строку и вставить новый пароль, и вы можете сравнить новый пароль со старыми паролями также при вставке
Комментарии:
1. deepika отличное решение, всегда лучше полагаться на нашу собственную архитектуру базы данных и функциональность, мне нравится ваш способ@devjosh
2. добро пожаловать, я люблю всегда придерживаться базовых функций, потому что мы можем настроить все в соответствии с нашими logic.@happy программирование