代码之家  ›  专栏  ›  技术社区  ›  ProfK

成员资格用户的更新

  •  1
  • ProfK  · 技术社区  · 15 年前

    我试图编写用户管理页的代码,但是 Membership API不允许对密码问题等直接更新。也许我可以用它来控制吗?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Chris    15 年前

    要回答有关更新密码的特定问题,请执行以下操作:

    对于.aspx页或.ascx控件,可以使用以下标记:

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

    对于背后的代码,您至少需要这么多代码:

    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>");
    }
    

    如果你注意到控件的简介文本说我们需要密码来确认更改。这是正确的,因为成员资格提供程序方法需要将当前密码与新旧安全问题一起传入。大多数密码都是单向加密的,因此我将此控件作为自助服务类型的控件提供给用户,而不是在管理方面。

    祝你好运,希望这对你有所帮助。

    推荐文章