"古い" ASP.NETでは、カスタム認可属性を作成してHandleUnauthorizedRequestを上書きすることができました。私はカスタム認証ハンドラを使用してASP.NET Coreでこれを行うことはできません。後者は「成功」または「失敗」のいずれかであり、障害の性質に基づいて代替コントローラのアクションにリダイレクトしたいと考えています。Asp.netコア認可が失敗した場合に指定されたパスにリダイレクト
ここにシナリオがあります。私のウェブアプリケーションのユーザは、彼らが「アクティブ」なユーザ、つまり完全に登録されており、その詳細などを確認したことを示すクレームを持っています。新しいユーザはOpenIdConnectミドルウェアを使って認証されました。そのアカウントの「アクティブ」なユーザークレームは持っていません。したがって、新規ユーザーとアクティブユーザーの両方が認証されています。私は新しいユーザーがほとんどのアプリケーションにアクセスするのを防ぎたい。彼らがhttps://app.example.com/dashboardに行くことを試みるたびに、私はhttps://app.example.com/newuserページにそれらをリダイレクトしたい、そして、彼らはセットアッププロセスを経ることができる。
コントローラに認可ポリシーを使用して、「アクティブな」ユーザークレームの存在を確認し、アクセスを許可することができます。新しいユーザーがこの主張を持っておらず、承認に失敗した場合、私は認可ハンドラーにアクセスしているアプリケーションの領域にリダイレクトするロジックを持たせたい。しかし、ASPNETコアの認証フレームワークを使用してこれを行う方法はわかりません。 https://github.com/aspnet/Mvc/issues/4890を参照してください -
はCookieMiddlewareを使用し、OnRedirectToAccessDeniedイベントのハンドラを実装し、やや不格好なソリューションがあります。私はまた、すべての要求に対して実行されるアクションフィルタの実装について考えました。
は、私はちょうどここに愚かなことですか?確かに、認証の失敗に対して何らかのアクションを実行し、ユーザーを再認証して再認証するだけではないことが理にかなっています。