2009-07-01 2 views
1

Мне нужна помощь с помощью элемента управления PasswordRecovery в .net 2.0. Моя ситуация заключается в том, что приложение изменилось с хранения пароля в Hashed до Clear.Элемент управления MembershipProvider и PasswordRecovery

Проблема заключается в том, что недавно созданные пользователи имеют четкий пароль, и все еще есть пользователи с хешированными паролями. Когда я использую элемент управления PasswordRecovery, как показано ниже, для пользователей, у которых все еще есть хешированный пароль, поле «ПарольФормат» НЕ изменено для «очистки» для предыдущих пользователей с хешированными паролями.

<asp:PasswordRecovery MailDefinition-BodyFileName="/mailTemplates/changePassword.htm" MailDefinition-From="[email protected]" MailDefinition-Subject="Test" CssClass="noLines" ID="PasswordRecovery1" UserNameTitleText="" UserNameInstructionText="Enter User name and a new passord will be generated and mailed to the user" runat="server" SuccessText="Your password has been sent to your registered email address." SubmitButtonStyle-CssClass="button" 
    onsendingmail="PasswordRecovery1_SendingMail" MembershipProvider="AspNetSqlMembershipProviderF0005600"> 
    </asp:PasswordRecovery> 

<membership> 
    <providers> 
    <remove name="AspNetSqlMembershipProviderF0005600"/> 
    <add name="AspNetSqlMembershipProviderF0005600" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" applicationName="/" requiresUniqueEmail="false" minRequiredPasswordLength="1" minRequiredNonalphanumericCharacters="0" passwordFormat="Clear" maxInvalidPasswordAttempts="5" passwordAttemptWindow="10" passwordStrengthRegularExpression=""/> 
    </providers> 
</membership> 

ответ

2

У вас не может быть несколько схем хранения паролей в MemberhipProvider. Вы должны сбросить пароли всем пользователям, имеющим пароль hasehd, и отправить им новый автоматически сгенерированный пароль в свой адрес электронной почты с именем пользователя.

Либо вы должны взять пароль всех пользователей в hasehd или очистить.

Там должно быть однородным straegy для хранения паролей для MemberShipProviders.

+0

Привет большое спасибо за ваш ответ. Есть ли документация Microsoft, в которой также указано ваше утверждение, что все пароли должны быть хэшированными, ясными или зашифрованными? – 2009-07-01 13:17:07

+0

Я еще не встретил одного, и я не думаю, что он может даже существовать. У провайдера будет свой собственный механизм для чтения и записи паролей. Поэтому, если он настроен на выполнение в хешированном режиме, он не будет соответствовать режиму очистки. Речь идет не о том, что она может это сделать, или нет, просто просто умея читать-писать из db, не служит цели, потому что db не знает формат. –

1

это .__ curious_geek является правильным. Вам не нужна документация Microsoft, чтобы проверить его утверждение, это связано с природой хэшированных паролей. После того, как пароль был хэширован, не может быть восстановлен. Это просто характер хэширования - это односторонняя операция. Если бы это было двустороннее, это было бы шифрование, а не хеширование.

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

Смежные вопросы