認証タイプとして CAS サーバーが設定された ASP.NET MVC サイトがあります。また、Users テーブルと Roles テーブル (User が 1 つ以上のロールに関連付けられている) を持つ別のデータベースもあります。ユーザー名がユーザー テーブルと CAS システムの両方にある場合にのみ、ユーザーはシステムにログインできます。このソリューションが機能しています。
私の問題は、ログアウトしたユーザーの追跡を許可しようとする可能性なしに、(データベースから) 現在のユーザーを追跡できるように、User.IsAuthenticated に何らかの形のトリガーが必要になったことです。私が考えていたのは、ユーザーを HttpContext に追加する必要があるということですが、CAS セッションがタイムアウトした場合、またはユーザーがログアウトした場合にユーザーのクリアをトリガーする方法がわかりません。
また、User.IsInRole (ASP.NET ではなく、私のデータベースを使用) などの機能が必要ですが、これを実装する方法がわかりません。User を HttpContext に正常に追加できれば、IsInRole メソッドは単に User.Roles.Contains(string role) メソッドになると思いますが、たとえば、 DataAnnotation [Authorize(role = "ExampleRole")].
ASP.NET MVC 2 のカスタム メンバーシップ プロバイダーを作成するにはどうすればよいですか?などの質問を見てきました。しかし、これは私にとってはうまくいきません (おそらく CAS 認証を使用しているためでしょうか?)
どこから始めるべきか本当にわからないので、ガイダンスや背景の読み物をいただければ幸いです。GenericPrinciple、IPrinciple、および IIdentity を読みましたが、それらを現在のプロジェクトに適用する方法を理解するのに苦労しています。