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