2017-11-23 9 views
0

SQLMemberShipProviderを使用しています。パスワード変更後にMembershipProviderの検証が失敗する

ユーザ名とパスワードを入力すると、次のコードがmembershipProvider.ValidateUser(myUserName, myPassword)に実行され、ユーザが有効であることを示すtrueが返されます。

私は、次のコードを使用してパスワードをリセット:私は私のユーザー名と新しい変更したパスワードを入力したときに

var username = membershipProvider.GetUser(myUserName, false); 
username.ChangePassword(username.ResetPassword(), newPassword); 

さて、以下は再びmembershipProvider.ValidateUser(myUserName, newPassword)を実行しますが、今回は検証が失敗しました。

ValidateUserの両方の呼び出しで同じプロバイダを使用しているため、これはわかりません。元のパスワードがもはや有効でなくなったため、パスワードが変更されたように見えました。

パスワード形式はハッシュ化され、IsLockedはfalseであり、IsApprovedはtrueです。

答えて

0

コードがよさそうです。 ResetPasswordのは、あなたのweb.configファイルでtrueに設定されていないため、これが最もporbably発生している:

<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20"> 
    <providers> 
    <add name="SqlProvider" 
     type="System.Web.Security.SqlMembershipProvider" 
     connectionStringName="SqlServices" 
     enablePasswordRetrieval="false" 
     enablePasswordReset="true" 
     requiresQuestionAndAnswer="true" 
     passwordFormat="Hashed" 
     applicationName="MyApplication" /> 
    </providers> 
</membership> 

はenablePasswordReset = "真" が設定されていることを確認してください。

+0

こんにちはAbhishek、enablePasswordResetがtrueに設定されています – p0enkie

+0

これはPEBKACの問題です。使用した新しいパスワードがプロバイダで設定されたパスワードの正規表現に準拠していないため、検証に失敗しました。 Regexを満たす何かにこのパスワードを変更すると、期待どおりに動作します。 – p0enkie

関連する問題