题
我已经在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.");
不隶属于 StackOverflow