SQL データベースを指すフォーム認証を使用できるようにする、または Web アプリのさまざまなインストールで統合認証を使用できるようにする 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 を格納する) の 2 つのフィールドを持つユーザー テーブルを作成し、アプリケーション全体で内部 UserID を使用することを考えましたが、メンバーシップはそれほどきれいではありません。 C# のクラス。
統合認証と FBA を切り替えることができるアプリはたくさんあるようですが (Sharepoint 2007 が最初に思い浮かびます)、ソリューションの構築方法に関する適切なチュートリアルが Web 上に見つかりませんでした。どんな助けでも大歓迎です。ありがとう。