Sharepoint 2010.使用FBA创建用户

时间:2012-06-06 12:23:25

标签: sharepoint sharepoint-2010 fba

我正在尝试使用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数据库中创建的。所以,我不能在它的帐户下登录。 谁知道怎么做?

感谢。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

如果您可以在FBA UserManagement中看到用户,那么它已在会员数据库中创建。您是否检查了aspnetdb数据库以查看用户是否存在?

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

答案 2 :(得分:0)

这可能是一条评论,但我没有代表可以这样做。 这是给所有发现此问题的人的,因为他们对只是说要使用

的所有其他答案感到困惑
Membership.CreateUser() 

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

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

Membership.Providers[MembershipProvider].CreateUser()

要获取MembershipProvider,您可以像OP一样将其指定为硬编码字符串,也可以使用以下命令动态获取:

SPSite.WebApplication.IisSettings[SPUrlZone].FormsClaimsAuthenticationProvider.MembershipProvider()