我正在编写一个 Web 应用程序,我希望能够使用指向 SQL 数据库的表单身份验证,或者在 Web 应用程序的不同安装中使用集成身份验证。我对任一提供商的用户身份验证都很好,但我对如何构建我的数据库有疑问。
目前我正在做的是使用代码:
public static string UserID
{
get
{
if (HttpContext.Current.User.Identity.AuthenticationType == "Forms")
{
//using database auth
return Membership.GetUser().ProviderUserKey.ToString();
}
else
{
//using integrated auth
return HttpContext.Current.Request.LogonUserIdentity.User.ToString();
}
}
}
然后,我使用返回的密钥(取决于提供者,它是 aspnetdb 数据库中的用户 ID,或 windows SID)作为他们创建的项目的用户 ID,等等。虽然用户 ID 字段与数据库中的用户表无关就像你传统上会做的那样。
有没有更好的方法来解决这个问题?我曾想过创建一个用户表,其中包含两个字段 UserID(内部)和 ExternalID(存储 Windows SID 或来自 aspnetdb 的 ID),然后在整个应用程序中使用内部 UserID,但它与成员资格不一样c# 中的类。
似乎有很多应用程序允许您在集成身份验证和 FBA 之间切换(首先想到的是 Sharepoint 2007),但我在网上找不到任何关于如何构建解决方案的好的教程。任何帮助将不胜感激。谢谢。