2011-06-30 17 views
1

以前はActiveDirectoryメンバーシッププロバイダで作業していましたが、ADメンバーシッププロバイダを使用してアプリケーションを作成することに疑念があります。私は別のテーブル(カスタムロールテーブルを言うことができます)で外国参照する必要がある場合、私はロールとユーザーの関係を保持するテーブル内のユーザーを識別するために使用する必要がありますプライマリ識別子(外部キー)。Active Directory認証とカスタムロール

ユーザについて(ADの詳細以外の)追加情報は、ユーザー名、部署、現在のプロジェクトなどのように保存されている

が頻繁に撮影したアクティブディレクトリのスナップショットですとしてテーブルに格納されている。また

、その後、SQLで使用されるデータベースが結合されますか?

+0

aspnetメンバーシッププロバイダデータベースについて質問していますか? – Jayesh

+0

@Jayesh:それは私が混乱していることです。Active Directoryからユーザーを引き出している場合は、メンバーシッププロバイダーのデータベースのユーザーテーブルにすべてコピーする必要がありますか。問題は、ユーザーを参照している他のテーブルのユーザーをどのように参照すればよいかです。 –

答えて

1

ベースのメンバシッププロバイダを(そして、そのようなActiveDirectoryMembershipProviderなど派生プロバイダーが)としてユーザー名を使用しています機能キー(メンバーのクエリはUserNameをキークエリパラメータとして受け取り、1つのMembershipUserオブジェクトを返します)。これらのクエリは、ロール、電子メール、コメントなどを含む基本的なメンバシップ情報—を持つMemberShipUserオブジェクトを返します。ADMembership Providerを追加情報と組み合わせる場合は、UserNameをキーとして使用することをお勧めします。 .UpdateUserは電子メール、コメント、およびIsApprovedプロパティのみをコミットするため、データベースを使用すると余分なデータを格納する方が簡単です。

スナップショットは作成されませんが、必要に応じてキャッシュを有効にすることもできます。プロバイダーは、情報が必要なときにADに直接照会します。

+0

その説明をありがとう。 +1 –

0

作成時のaspnetメンバーシップデータベースは、App_Dataフォルダにあり、すべてのログインコントロールを非常にうまくサポートしているので、非常に便利です。ユーザーの役割は、aspnet構成マネージャーによって非常にうまく管理できます。プロファイルのプロパティは、データベース自体によってすべて管理されます。

このようにして作成されたデータベースは、サーバー接続に表示されます。データベースを分析すると、すべてのユーザがユーザ名とは別の特定のユーザIDを持つことがわかります。どちらもユニークです。他のテーブルのすべてのユーザーデータをコピーする必要はありません。ジョインを使用して関連データを指定できます。ユーザーがログインすると、あなたのコードの中にUser.Identity.Name(c#)で彼/彼女を紹介することができます。

親切にVisual Studioでサーバーエクスプローラーを使用してデータベーステーブルを表示し、テーブルの構造を表示することができます - aspnet_Users, aspnet_Membership, aspnet_Profile等...

+0

私はSqlMembershipプロバイダーからそれを理解していますが、もし私が約25,000人のアクティブなディレクトリに合計ユーザを持っていたらどうしますか?私はaspnet_Usersでそれらをコピーする必要があります –

+0

@Kunal私はここであなたのコメントから混乱しています。親切なことに、あなたはアクティブディレクトリから何を参照していますか? – Jayesh

関連する問題