使用私有站点的成员资格提供程序

时间:2011-06-20 13:12:18

标签: asp.net security asp.net-membership membership-provider sqlmembershipprovider

我不能成为第一个遇到这个问题的人,我必须错过一个简单的解决方案。我继承了一个非公共ASP.NET站点,使用带有SqlMembershipProvider的表单身份验证来保护站点。开发人员手动添加到数据库的用户一切正常。

我需要添加一个管理页面,以允许特权用户添加和更改用户帐户。成员资格提供程序使构建一个很容易,但我现在遇到的问题是SqlMembershipProvider问题/答案要求。管理员需要能够将其他用户的密码重置为临时密码并创建新的用户帐户(也使用临时密码)。重置密码需要用户问题的答案或当前密码。

我当然可以为所有帐户添加类似“问题”和“回答”的内容,但它会起作用,但我担心这样做的安全风险。也许我太偏执了。除了大量工作之外,创建自定义成员资格提供程序并不能解决此问题,因为成员资格提供程序库具有相同的要求。

谢谢。

1 个答案:

答案 0 :(得分:2)

  

重新设置密码需要用户问题的答案或当前密码

如果您当前未使用问题/答案,您可以在web.config中重写此内容

requiresQuestionAndAnswer="false"

之后你可以这样做:

        string requesteduserGUIDstring = "some GUID";
        Guid UserID = new Guid(requesteduseridstring.ToUpper());
        MembershipUser mu = Membership.GetUser(UserID);
        mu.ChangePassword(mu.ResetPassword(), tbNewPassword.Text);

如果您使用的是问题/答案,则可以在web.config中添加第二个提供程序,并仅为该提供程序设置相同的否决权,并仅使用该提供程序进行重置密码功能,