2009-07-01 9 views
1

J'ai besoin d'aide pour utiliser le contrôle PasswordRecovery dans .net 2.0. Ma situation est l'application a changé de stocker le format de mot de passe dans Hashed à Effacer.Contrôle MembershipProvider et PasswordRecovery

Le problème est que les utilisateurs nouvellement créés ont un mot de passe clair stocké et qu'il y a toujours des utilisateurs avec des mots de passe hachés. Lorsque j'utilise le contrôle passwordRecovery comme indiqué ci-dessous pour les utilisateurs qui ont encore un mot de passe haché, le champ 'PasswordFormat' n'est PAS modifié pour 'effacer' pour les utilisateurs précédents avec des mots de passe hachés.

<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> 

Répondre

2

Vous ne pouvez pas avoir plusieurs schémas de stockage de mot de passe dans MembershipProvider. Vous devez réinitialiser les mots de passe à tous les utilisateurs ayant un mot de passe hasehd et leur envoyer un nouveau mot de passe généré automatiquement dans leur e-mail avec le nom d'utilisateur.

Soit vous devez prendre le mot de passe de tous les utilisateurs pour hasehd ou pour effacer.

Il doit y avoir straegy uniforme pour le stockage de mot de passe pour MemberShipProviders.

+0

Salut merci beaucoup pour votre réponse. Existe-t-il une documentation Microsoft indiquant également que tous les mots de passe doivent être hachés, effacés ou cryptés? –

+0

Je n'en ai pas encore rencontré un et je ne pense pas qu'il pourrait même exister. Un fournisseur aura son propre mécanisme pour lire et écrire des mots de passe. Donc, s'il est configuré pour le faire en mode haché, il ne correspondra pas au mode d'effacement. Il ne s'agit pas de savoir si elle peut le faire ou non, simplement en étant simplement en mesure de lire-écrire à partir de DB ne sert pas le but parce que DB ne connaît pas le format. –

1

ce. Curieux_geek est correct. Vous n'avez pas besoin de documentation Microsoft pour vérifier son assertion, elle est inhérente à la nature des mots de passe hachés. Une fois qu'un mot de passe a été haché, ne peut pas être être récupéré. C'est simplement la nature du hachage - c'est une opération à sens unique. Si c'était bidirectionnel, ce serait le cryptage - pas le hachage. Par conséquent, si vous passez des mots de passe hachés au texte brut, doit réinitialiser le mot de passe de tout le monde dont le mot de passe a été haché. Il n'y a aucun moyen de récupérer leur mot de passe - il faut leur attribuer un nouveau mot de passe.