3

私のユーザーは、Active Directory またはデータベースに対してフォーム認証を使用します。Windows統合認証はありません!!

私が欲しいのは、ユーザーが認証フォームを送信すると、Active Directory に対してユーザーを検証しようとし、失敗した場合はデータベースを試してみることです。

どうやってやるの?私が念頭に置いていたのは、ロジックをカプセル化するカスタム メンバーシップ プロバイダーを構築することでしたが、開始方法がわかりません。

より良いアイデアはありますか?

4

2 に答える 2

4

これを実装できる唯一の方法は、カスタム プロバイダーを作成することです。

完璧な世界では、単純にファサード プロバイダーを作成し、必要に応じて適切なプロバイダー (SQL または AD) を活用して、認証を行い、必要な程度の完全性に戻すMembershipUserことができます。

現実の世界では、これはまだ可能ですが、いくつかのフープをジャンプする必要があります。

  • ファサードプロバイダーを作成し、最初に要素のproviders子要素に配置し、要素membershipで defaultProvider として設定しますmembership
  • SqlMembershipProviderActiveDirectoryMembershipProviderを適切に構成し、ファサードの後に​​配置します。
  • ファサードから、静的Membership.Providersコレクションから構成されたプロバイダーにアクセスして、必要に応じて機能を実行します。

ロールを使用する必要がある場合は、このパターンを繰り返す必要があることに気付くかもしれません。これは適用可能ですが、実装はもう少し複雑で、この投稿の範囲を超えています。

または、SQL プロバイダーの完全なソース コードはこちらから入手でき、産業用グレードのカスタム プロバイダーを実装するための出発点およびガイダンスとして最適です。

カスタム セキュリティ機能をゼロから実装する前に、抵抗が最も少ない (労力と頭痛が少ない) 方法を最初に検討し、ファサードをスパイクすることをお勧めします。

幸運を。

于 2010-07-18T00:29:55.657 に答える
0

あなたが言ったように、あなたはこの状況を処理するためにカスタムメンバーシッププロバイダーを作成するのが最善です。

MSDNには、カスタムメンバーシッププロバイダーの作成に関する概要と、ODBCメンバーシッププロバイダーの優れた例があります

それはあなたに良いスタートを与えるはずです。

于 2010-07-14T02:51:24.770 に答える