0

我正在尝试使用 FBA(基于表单的身份验证)在 SharePoint 2010 中创建用户。我按照本文中的步骤配置 FBA:http ://donalconlon.wordpress.com/2010/02/23/configuring-forms-base-authentication-for-sharepoint-2010-using-iis7/

然后我上传了 FBA 包http://sharepoint2010fba.codeplex.com/。Web 部件正常加载,但未创建用户。如果您尝试创建用户,则会出现未知错误。

之后,我尝试自己创建授权表。下面的代码处理注册事件:

    MembershipCreateStatus mcs = new MembershipCreateStatus();
    SPSecurity.RunWithElevatedPrivileges(delegate()
    {
       using (SPSite site = new SPSite("http://makovkasp:30763/"))
       using (SPWeb spWeb = site.OpenWeb())
       { 
          try
          {

             MembershipUser membershipUser =
Membership.Providers["FBAMembershipProvider"].CreateUser(txtLogin.Text,
                                   txtPassword.Text,
                                   txtEmail.Text,
                                   txtSecretQuestion.Text,
                                   txtAnswer.Text, true, null, out mcs);

             spWeb.AllowUnsafeUpdates = true;
             SPUser spUser = spWeb.EnsureUser(txtLogin.Text);
             SPGroup spGroup = spWeb.Groups[2];
             spGroup.AddUser(spUser);
             spGroup.Update();

          }
          catch (Exception ex)
          {
             System.Console.WriteLine(ex.ToString());
          }
       }
    });

执行此代码后,用户在 SharePoint 中创建(我可以在 FBA UserManagement 中看到它)。但它不是在 FBA 数据库中创建的。所以,我无法使用它的帐户登录。有谁知道该怎么做?

谢谢。

4

3 回答 3

0

mcs您应该在代码执行后询问参数值。它可能指示未创建用户帐户的原因。MembershipCreateStatus枚举应显示成员资格提供程序未成功保存用户的原因。

于 2012-06-06T13:02:45.383 回答
0

注册用户时的未知错误通常意味着发送电子邮件时出错。您可以查看 SharePoint ULS 日志以了解更多详细信息。我会检查您的 SharePoint 外发邮件设置。

如果您可以在 FBA UserManagement 中看到该用户 - 则该用户已在会员数据库中创建。您是否检查过 aspnetdb 数据库以查看用户是否存在?

您可以使用其他 FBA 用户的帐户登录吗?如果不是,则您的 FBA 设置可能存在问题。确保成员资格条目位于您的 STS 和 Central Admin Web 配置中。

于 2012-06-06T17:15:49.673 回答
0

这可能应该是一个评论,但我还没有代表这样做。这适用于发现此问题的任何人,因为他们对所有其他仅说要使用的答案感到困惑

Membership.CreateUser() 

在启用 FBA 的 SharePoint 网站中创建用户。

当您的 Web 应用程序启用了多个身份验证提供程序时,您需要使用以下方式指定提供程序:

Membership.Providers[MembershipProvider].CreateUser()

要获取MembershipProvider,您可以将其指定为像 OP 那样的硬编码字符串,或者您可以使用以下方法动态获取它:

SPSite.WebApplication.IisSettings[SPUrlZone].FormsClaimsAuthenticationProvider.MembershipProvider()
于 2019-02-09T08:21:38.783 回答