すぐに使用できるAsp.Netメンバーシップ機能を使用して、ユーザー管理と役割管理を処理しています。
私のアプリケーションは、クライアントごとに1つのデータベースで構成されており、各データベースには独自のメンバーシッププロバイダーとロールプロバイダーがあります。
ただし、複数のクライアントで作業しているユーザーがいるため、シングルログインを使用して、表示するクライアントを選択できるようにしたいと考えています。すべてのユーザー名と、アクセスできるクライアントとの関係を格納する中間データベースを使用して、この「クライアントの切り替え」を容易にするためのすべての設定を行いました。また、あるデータベースのユーザーを更新すると、他のデータベースの対応するすべてのユーザーが更新されるように設定しました。ASP.Netに特定のMembershipProviderに変更してそのメンバーシッププロバイダーを使用するように指示する方法がわからないことを除いて、このロジックはすべて非常にうまく機能しています。
私が使用すべきだと思ったプロセスは次のとおりです(ユーザーがクライアントドロップダウンでクライアントを切り替えたとき):
- 現在のユーザーをログアウトします
- 使用するメンバーシッププロバイダーをASP.Netに通知します(ドロップダウンで選択したクライアントに基づいて選択します)
- 選択したクライアントのメンバーシッププロバイダーを使用して現在のユーザーをログインし、ドロップダウンを変更したときに表示していたページに更新/リダイレクトします
特定のメンバーシッププロバイダー(Membership.Providers [MembershipProviderName])への参照を取得する方法は知っていますが、ASP.Netにメンバーシッププロバイダーを変更するように指示する方法に関する情報が見つかりません。asp.netログインコントロールがバックグラウンドでこれをどのように実行するのか、私にはよくわかりません。おそらく、これらすべてで役立つでしょう。
私はしばらくの間SOとWebを検索してきましたが、Web.configのProviders要素のDefaultProvider属性を変更しようとしているいくつかのスレッドを除いて、これを行うことについて多くを見つけることができないようです。