我已经在SharePoint 2010上实施了FBA(基于索赔的身份验证)。

  • 自定义登录页面
  • 自定义登录页面
  • 密码恢复页面(忘记password.aspx)
    在hevenpassword页面中,要求用户输入他们的电子邮件地址,他们在登录时使用并在后面的代码中使用此电子邮件来获取username使用会员资格。用户凭证将通过邮件发送。

但是现在,代码作为例外说“未实现该功能”。我想知道;我没有使用任何自定义数据库,必须为其创建自定义会员提供商。那为什么我会遇到这个错误。让我知道是否有人有任何线索或面临类似问题。谢谢。
问候,帕迪

有帮助吗?

解决方案

当为SharePoint 2010配置FBA时,在 web.config 文件 - Microsoft.SharePoint.Administration.Claims.SPClaimsAuthMembershipProvider (通常命名 一世) 和 System.Web.Security.SqlMembershipProvider (命名 FBamembership 在这种情况下)。必须将默认会员提供者设置为前者(即SharePoint索赔1),以便FBA身份验证正常工作。

当线包含 Membership.GetUserNameByEmail(...) 被执行,使用默认会员资格提供商,结果 SPClaimsAuthMembershipProvider.GetUserNameByEmail 叫做。 MSDN 说这种方法 保留供内部使用,不打算直接从您的代码中使用 并根据评论 社区内容 节扔 NotImplementedException.

您需要检索 SqlMembershipProvider 提供者来自 Membership.Providers 收集,然后致电 GetUserNameByEmail 使用此实例的方法。


我在配置提供商的前缀 web.config 文件和这样的检索:

string applicationNamePrefix = "fbaProvider_";
MembershipProvider fbaProvider;

foreach (MembershipProvider provider in Membership.Providers)
{
    if (provider.ApplicationName.StartsWith(applicationNamePrefix, StringComparison.InvariantCultureIgnoreCase))
    {
        fbaProvider = provider;
    }
}

throw new InvalidOperationException("Appropriate provider was not found.");
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top