【问题标题】:Using a Membership Provider for Private Site为私人网站使用会员提供者
【发布时间】:2011-09-18 16:38:14
【问题描述】:

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

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

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

谢谢。

【问题讨论】:

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


    【解决方案1】:

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

    如果您当前没有使用问题/答案,您可以在 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);
    

    如果您使用问题/答案,您可以将 second 提供程序添加到您的 web.config,并仅为该提供程序设置相同的否决规则,并仅将该提供程序用于重置密码功能,

    【讨论】:

    • guid 部分是我的代码中的一个 sn-p,我在其中删除了一些其他内容,但我想你明白了
    猜你喜欢
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    相关资源
    最近更新 更多