0

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

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

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

谢谢你。

4

1 回答 1

2

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

如果您当前没有使用 question/answers,您可以在 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 并仅为该提供程序设置相同的否决,并仅将该提供程序用于重置密码功能,

于 2011-06-20T13:24:57.437 回答