【发布时间】:2010-09-09 01:33:50
【问题描述】:
我正在编写一个 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),但我在网络上找不到任何关于如何构建解决方案的好的教程。任何帮助将不胜感激。谢谢。
【问题讨论】:
-
你的实现有什么特别不干净的地方?需要更多关于您正在解决的问题的背景信息。