首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FBA on Sharepoint 2010

FBA on Sharepoint 2010
EN

Stack Overflow用户
提问于 2011-01-17 13:09:53
回答 1查看 2.7K关注 0票数 1

我已经在Sharepoint 2010上实现了FBA (基于索赔的认证)。实施了以下措施。

  • 自定义登录页
  • 自定义登录页
  • 密码恢复页面(ForgetPassword.aspx) 在ForgetPassword页面中,用户被要求输入他们的电子邮件地址,他们在登录时使用,在后面的代码中,我使用这封电子邮件使用Membership.GetUserNameByEmail函数获得UserName,然后将这个用户名传递给Membership.GetUser函数,以获得通过邮件发送的用户凭据。

但现在,代码抛出异常,表示“函数未实现”。我想知道,我没有使用任何必须为其创建自定义成员资格提供程序的自定义数据库。那我为什么要犯这个错误。如果有人有任何线索或遇到类似的问题,请告诉我。谢谢。

你好,帕迪

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-17 21:03:30

在为SharePoint 2010配置FBA时,在web.config文件中定义了两个成员资格提供程序-- Microsoft.SharePoint.Administration.Claims.SPClaimsAuthMembershipProvider (通常命名为i)和System.Web.Security.SqlMembershipProvider (本例中称为FBAMembership )。默认成员资格提供程序必须设置为前者(即SharePoint声明之一),才能使FBA身份验证正常工作。

执行包含Membership.GetUserNameByEmail(...)的行时,将使用默认的成员资格提供程序,从而调用SPClaimsAuthMembershipProvider.GetUserNameByEmailMSDN说,这个方法是保留给内部使用的,不打算直接从代码中使用,并且根据Community部分中的注释,它抛出NotImplementedException

您需要从SqlMembershipProvider集合中检索Membership.Providers提供程序的一个实例,然后使用该实例调用GetUserNameByEmail方法。

在配置web.config文件中的提供程序时,我使用前缀,并按如下方式检索它们:

代码语言:javascript
复制
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.");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4713492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档