VS2015を使用してASP.NET MVC Core(1.1.0)アプリケーションを作成しました。ダイアログボックスでAzure ADに接続するオプションを選択したので、VSは定型コードを生成し、予想どおりに私の仕事は&の学校アカウントでログインできるMicrosoftのログインページにリダイレクトされます。Azure Active Directoryを使用してユーザーを認証した後にコードを実行
ユーザーがログインした後、最初のページ(たとえば/ home/index)を表示する前に、データベースに保存したユーザーから情報を取得する必要があります(表示名、連絡先電子メール、電話番号、住所、ユーザの写真などの情報)を含むことができる。
これまで考えてきたのは、この情報を取得してViewData経由でビューに渡す方法でControllerBaseを追加することです。しかし、この情報のデータベースを何度も照会することは、効率的ではないようです。別の方法としては、この情報をクッキーまたはセッション状態で保存することで、データベースに一度しかアクセスできない場合があります。しかし、ControllerBaseに依存しなければエラーが発生する可能性があります(たとえば、コントローラのメソッドによってはベースメソッドを呼び出すことを忘れた場合など)。また、(www.myapp.com/Users/joedoe/Detailのように)ユーザーが事前定義されたパスを使用してURLを入力した場合にのみ、ホームコントローラでこの機能を持つことができません。
私が検索しOpenIdConnectOptionsでイベントプロパティを使用してへの参照は、スタートアップクラスでアプリケーションビルダに渡されたオブジェクトが見つかりました:、
app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions
{
ClientId = Configuration["Authentication:AzureAd:ClientId"],
Authority = Configuration["Authentication:AzureAd:AADInstance"] + Configuration["Authentication:AzureAd:TenantId"],
CallbackPath = Configuration["Authentication:AzureAd:CallbackPath"],
Events = new OpenIdConnectEvents {
//
}
});
しかし、OpenIdConnectEventsクラスは、いくつかの「OnAuthenticationSucceeded」イベントを持っていませんそれはOnAuthenticationFailedしか持っていません。これは私が望むものではなく、名前が私が探しているものではないように見える他のコールバックです。
OpenIdConnectEventsでコールバックを使用する必要がありますか、あるいは、ユーザーが認証された後にAADに接続してイベントをキャッチするASP.NET MVCコアアプリケーションの推奨方法は何ですか?
ありがとうございます。
コールバックのfuctionとOnTokenValidatedプロパティを設定!あなたのジョンをありがとう、あなたが言ったように、トリックをしました。そして、提供された例が素晴らしいです、私はセッション状態を使用することを計画していましたが、あなたが提供した例のように、より良い選択肢と思われます。 –