2010-11-28 7 views
1

J'essaie de coder une page d'administration utilisateur, mais l'API Membership ne permet pas beaucoup en termes de mises à jour directes, par exemple. question de mot de passe. Y a-t-il un contrôle que je peux utiliser pour cela?Mises à jour des utilisateurs d'appartenance

Répondre

1

Pour répondre à votre question sur la mise à jour la question du mot de passe:

Pour votre page .aspx ou .ascx contrôle que vous pouvez utiliser le balisage suivant:

<p style="margin-bottom: 20px;"> 
    A security question is used to assist you in logging in. 
    Because of this, we ask that you provide your password for confirmation 
    of wanting to change the security question associated with your account. 
</p> 
<ul class="formFields"> 
    <li> 
     <label> 
      Question</label><asp:TextBox ID="uxNewQuestion" runat="server" /> 
     <asp:RequiredFieldValidator ID="uxNewRequired" 
      runat="server" ControlToValidate="uxNewQuestion" 
      ErrorMessage="New Question is required." 
      ToolTip="New Question is required." 
      ValidationGroup="ChangeQuestion">*</asp:RequiredFieldValidator> 
    </li> 
    <li> 
     <label> 
      Answer</label><asp:TextBox ID="uxNewAnswer" runat="server" /> 
     <asp:RequiredFieldValidator ID="uxConfirmRequired" 
      runat="server" ControlToValidate="uxNewAnswer" 
      ErrorMessage="Must Confirm Question" 
      ToolTip="Must Confirm Question" ValidationGroup="ChangeQuestion"> 
      *</asp:RequiredFieldValidator> 
    </li> 
    <li> 
     <label> 
      Your Password:</label> 
     <asp:TextBox ID="uxPassword" runat="server" TextMode="Password"> 
      </asp:TextBox> 
     <asp:RequiredFieldValidator ID="uxPasswordRequired" 
      runat="server" ControlToValidate="uxPassword" 
      ErrorMessage="Must Provide Correct Password" 
      ToolTip="Must Provide Correct Password" 
      ValidationGroup="ChangeQuestion">*</asp:RequiredFieldValidator> 
    </li> 
</ul> 
<p> 
    <asp:Button ID="uxSave" runat="server" Text="Save Security Question" 
     OnClick="uxSave_Click" 
     ValidationGroup="ChangeQuestion" /> 
    <asp:Button ID="Button1" runat="server" Text="Cancel" 
     OnClick="uxCancel_Click" CausesValidation="False" /></p> 
<div style="margin-top: 20px;"> 
    <asp:Literal ID="uxFailureText" runat="server" 
     EnableViewState="False"></asp:Literal> 
</div> 

Pour le code derrière vous avez besoin d'au moins ce code bien:

MembershipUser user = Membership.GetUser(GuidUserID); 
string password = uxPassword.Text; 
string newquestion = uxNewQuestion.Text; 
string newanswer = uxNewAnswer.Text; 

if (user.ChangePasswordQuestionAndAnswer(password, newquestion, newanswer)) 
{ 
    Response.Redirect("~/Admin/Default.aspx", true); 
} 
else 
{ 
    uxFailureText.Text = string.Format("<p class='error'>There has been a 
     problem updating your security question.</p>"); 
} 

Si vous remarquez que le texte d'introduction du contrôle dit que nous avons besoin du mot de passe pour confirmer le changement. Ceci est correct car la méthode du fournisseur d'appartenance doit avoir le mot de passe actuel transmis avec l'ancienne et la nouvelle question de sécurité. La plupart des mots de passe sont cryptés dans un sens, j'ai donc fourni ce contrôle à l'utilisateur comme un type de contrôle en libre-service au lieu d'être sur le plan administratif.

Bonne chance et j'espère que cela vous aidera.

+0

Le contrôle changepassword ne vous permet pas de changer le mot de passe question –

+1

Merci @Chris. Oui, j'ai vu le fournisseur a besoin du mot de passe pour changer la question etc. mais je me demandais juste si un mécanisme existe déjà. On dirait que non, donc votre code sera un bon début. BTW, +1 pour votre effort, et je souhaite que je pourrais faire un autre +1 pour la façon dont vous marquez des formes :-) – ProfK