在SharePoint 2010中使用我的旧成员资格提供程序

时间:2012-09-30 17:02:50

标签: asp.net sharepoint-2010 membership-provider claims-based-identity

我有一个自定义成员资格提供程序,我在SharePoint 2007服务和.NET Web应用程序中都使用它。现在我正在尝试将SharePoint平台更新到2010 Foundation,我的提供程序不起作用。下面是两个验证用户身份并使用相同密钥设置auth cookie的示例。

MembershipProvider provider = Membership.Providers["Provider"];

//Alternative one using cookiename (ProviderUserKey from other source then provider)
if (provider.ValidateUser(user, passwd))
{
    FormsAuthentication.SetAuthCookie(cookieName, false);
    Response.Redirect("/");
}
else
{
    ShowErrorMsg();
}

//Alternative two using provider to get ProviderUserKey same as cookieName above
if (provider.ValidateUser(user, passwd))
{
    MembershipUser memberUser = provider.GetUser(user, false); //false or true doesnt matter in this provider
    FormsAuthentication.SetAuthCookie(memberUser.ProviderUserKey.ToString(), false);
    Response.Redirect("/");
}
else
{
    ShowErrorMsg();
}

问题是SharePoint 2010使用基于声明的身份,我确实尝试了以下但没有成功。

MembershipProvider provider = Membership.Providers["Provider"];

if (provider.ValidateUser(user, passwd))
{
    SPFormsAuthenticationProvider authProvider = IisSetting.FormsClaimsAuthenticationProvider;

    SecurityToken token = SPFormsUserNameSecurityTokenHandler.CreateSecurityToken(authProvider.MembershipProvider, cookieName, passwd);
    SPFederationAuthenticationModule.Current.SetPrincipalAndWriteSessionToken(token);
}

但这对我不起作用。有没有人知道如何将声明标识基于另一个密钥,然后是提供的用户名。

1 个答案:

答案 0 :(得分:0)

如果您使用Claim-based authentication FBA而不是您应该使用:

  bool status = SPClaimsUtility.AuthenticateFormsUser(Context.Request.UrlReferrer, UserName, Password);
  if (status)
  {
          // do your stuff.
  }