1

J'utilise le mot de passe changement caractéristique du AspNetSqlMembershipProvider standard dans mon application ASP.NET MVC-2:C# MembershipUser.ChangePassword échoue pour un seul utilisateur?

MembershipUser user = Membership.GetUser(userId); 
string pwd = user.ResetPassword(); 
if (user.ChangePassword(pwd, confirmPassword)) 
{ 
    // it worked 
} 

Et cela fonctionne pour la grande majorité des utilisateurs, mais il y a quelques utilisateurs qui peuvent pas changer leurs mots de passe - user.ChangePassword() retourne juste faux.

Je l'ai essayé moi-même pour voir ce qui se passait, et entré un mot de passe simple 12345678 pour cet utilisateur et il n'a pas pu changer. Par conséquent, ce n'est pas parce qu'ils entrent des mots de passe qui ne correspondent pas aux règles de mot de passe. Mon web.config a le fournisseur d'appartenances défini comme ceci:

<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" 
connectionStringName="MembershipDatabaseConnectionString" enablePasswordRetrieval="false" 
enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="true" 
maxInvalidPasswordAttempts="5" minRequiredPasswordLength="8" 
minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" /> 

est juste la définition normale de AspNetSqlMembershipProvider, il n'y a rien de fantaisie ici.

Pourquoi un utilisateur (moi) pourrait-il changer son mot de passe pour être 12345678, mais un autre utilisateur ne peut pas changer son mot de passe pour être 12345678? Cet autre utilisateur ne peut pas changer son mot de passe pour quoi que ce soit.

+1

Si cela se passe dans un environnement de test (ou si vous pouvez recréer dans un tel environnement), pouvez-vous publier les valeurs dans la table utilisateur d'adhésion pour celles qui échouent et celles qui n'échouent pas? – steinar

+0

La seule fois où la méthode de changement de mot de passe doit renvoyer la valeur false est la suivante: si le même mot de passe échoue, vérifiez que l'utilisateur se connecte. Comment validez-vous le mot de passe lors de la connexion? Vous pouvez également essayer de réinitialiser le mot de passe et voir si vous pouvez le changer. – Greg

Répondre

0

Il semble que ces utilisateurs soient verrouillés.

MembershipUser.ChangePassword appelle SqlMembershipProvider.ChangePassword, ce qui renvoie false si l'utilisateur est verrouillé.

Questions connexes