В приложении, над которым я работаю, пользователи создаются не одобрены, пока не активируют свою учетную запись. Флаг IsApproved
установлен в значение false до тех пор, пока он не активируется.Проверить пароль на SqlMembershipProvider в обход IsApproved?
Когда они отправляют свою активацию, мы хотим проверить, что их пароль действителен до активации пользователя, но Membership.ValidateUser(..)
всегда будет возвращать false, если пользователь не одобрен, поэтому не существует способа различать неправильный пароль и не одобренным пользователем.
Как проверить пароль для подтверждения пользователя, который не одобрен?
Возможные решения я рассматривающие до сих пор:
- пользовательского поставщика членства: это много работы и поражения весь смысл использования системы членства в .NET, это базовая функциональность, то должен быть способ проверки пароля.
- Правильно установите флаг IsApproved и измените его: это очень небезопасно.
- Используя
ChangePassword
, чтобы перейти к случайному паролю, а затем снова, проверяя, удалось ли это: это неприятный взлом, я действительно не хочу этого делать. - Вызов частной
CheckPassword
функции наSqlMembershipProvider
: методы являются частными по причине, опять же, я не хочу этого делать.
Есть ли другой способ? Наверняка это стандартная функциональность, которая требуется только любой полнофункциональной системе учетных записей пользователей с активациями и т. Д. Существует ли лучший дизайн для системы, чем то, что я делаю? Я использую IsApproved неправильно?
Спасибо за помощь.
Редактировать: похоже, это вызвало некоторую путаницу. Я создал учетную запись пользователя, у нее есть пароль, который соответствует требованиям сложности и т. Д. Что я хочу сделать, когда пользователь отправляет форму с их именем пользователя и паролем в ней, проверьте, что пароль, который они предоставили, соответствует паролю на счет. Я просто хочу знать, дали ли они правильный пароль. Из моего исследования структуры, кажется, невозможно обойтись без также, проверяя, активна ли их учетная запись.
Почему вы хотите проверить, подходит ли их пароль с помощью метода 'ValidateUser()'? При создании пользователя (с 'IsApproved = false')' Membership' всегда будет проверять пароль. Если пароль соответствует всем требованиям, пользователь будет добавлен. Это должно указывать на то, что пароль действителен. Если у вас есть другое определение «valid»? – SollyM
Создание пользователя подтверждает, что пароль соответствует определенным требованиям. Я хочу проверить, что пароль для отправки является правильным паролем для учетной записи пользователя. – danpalmer
Пароль должен быть подтвержден до создания учетной записи. Теперь вы идете назад. *** Есть ли причина не проверять пароль перед созданием учетной записи? Например, password не может быть 123456 *** – Win