Sharepoint 2010上的FBA

Sharepoint 2010上的FBA,sharepoint,fba,Sharepoint,Fba,我已经在Sharepoint 2010上实现了FBA(基于声明的身份验证)。实施了以下措施 自定义登录页 自定义登录页 密码恢复页面(ForgetPassword.aspx) 在ForgetPassword页面中,用户被要求输入他们的电子邮件地址,他们在登录时使用,我正在使用此电子邮件通过Membership.GetUserNameByEmail函数获取用户名,然后将此用户名传递给Membership.GetUser函数以获取通过邮件发送的用户凭据 但现在代码作为异常抛出,表示“函数未实现”

我已经在Sharepoint 2010上实现了FBA(基于声明的身份验证)。实施了以下措施

  • 自定义登录页
  • 自定义登录页
  • 密码恢复页面(ForgetPassword.aspx)
    在ForgetPassword页面中,用户被要求输入他们的电子邮件地址,他们在登录时使用,我正在使用此电子邮件通过Membership.GetUserNameByEmail函数获取用户名,然后将此用户名传递给Membership.GetUser函数以获取通过邮件发送的用户凭据
但现在代码作为异常抛出,表示“函数未实现”。我想知道;我没有使用任何自定义数据库,我必须为其创建自定义成员资格提供程序。那我为什么会犯这个错误。如果有人有任何线索或遇到类似问题,请告诉我。谢谢。
当做
Paddy

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

当包含
Membership.GetUserNameByEmail(…)的行执行
,使用默认成员资格提供程序,因此调用了SPClaimsAuthMembershipProvider.GetUsernameBay电子邮件。表示此方法保留供内部使用,不打算直接从代码中使用,并且根据它抛出的社区内容部分中的注释,
NotImplementedException

您需要从
membershipProviders.Providers
集合中检索
SqlMembershipProvider
提供程序的实例,然后使用此实例调用
getUsernameBayEmail
方法


我在
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.");

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

当包含
Membership.GetUserNameByEmail(…)的行执行
,使用默认成员资格提供程序,因此调用了SPClaimsAuthMembershipProvider.GetUsernameBay电子邮件。表示此方法保留供内部使用,不打算直接从代码中使用,并且根据它抛出的社区内容部分中的注释,
NotImplementedException

您需要从
membershipProviders.Providers
集合中检索
SqlMembershipProvider
提供程序的实例,然后使用此实例调用
getUsernameBayEmail
方法


我在
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.");

它们存储在创建的常规sql数据库中。虽然密码以哈希形式存储,但我能够成功登录。问题是当我尝试使用用户“string textUserName=Membership.GetUserNameByEmail(txtemailid.Text);”输入的电子邮件地址获取用户名时它抛出错误,我已经在上面提到过。谢谢,我没有创建任何自定义成员资格提供程序。我在使用和页面加载时包含了“System.Web.Security”,我正在检查所有这些参数,如果用户提供了正确的电子邮件id,我想重置密码并将其发送给使用MembershipUser.ResetPassword()的用户。我希望我正确理解了您的问题。谢谢。它们存储在创建的常规sql数据库中。虽然密码以哈希形式存储,但我能够成功登录。问题是当我尝试使用用户“string textUserName=Membership.GetUserNameByEmail”输入的电子邮件地址获取用户名时(txtemailid.Text);“它抛出错误,我已经在上面提到过。谢谢,我没有创建任何自定义成员资格提供程序。我已经包含了“System.Web.Security”在使用和页面加载时,我正在检查所有这些参数,如果用户提供了正确的电子邮件id,我希望重置密码并使用MembershipUser.ResetPassword()将其发送给用户。我希望我正确理解了你的问题。谢谢PaddyHi Marek,你有没有支持最后一段的示例代码above@Paddy我更新了答案-如果这是你需要的,请告诉我。嗨,Marek,你有任何支持最后一段的示例代码吗above@Paddy我更新了答案-如果答案正确,请告诉我这就是你需要的。