1つのコメントには当てはまらないので、これを答えに入れることにしました。
まず、HTTPステータスコードの基本に戻ってください。
3.1:401と403
RFC 7235仕様から - あなたは、認証と認可の話をするときに興味のある二つの主要なコードがあります。 401不正(https://tools.ietf.org/html/rfc7235#section-3.1)
401(不正な)ステータスコードが、ターゲットリソースに対する有効な認証クレデンシャル を欠いているので、要求が が適用されていないことを示しています。
6.5.3。禁断403(https://tools.ietf.org/html/rfc7231#section-6.5.3)
403(禁止)ステータスコードは、サーバが 要求を理解していることを示し、それを許可することを拒否する。一般公開を希望するサーバ は、その理由を応答内に記述することができます。 ペイロード(存在する場合)。
つまり、401は認証に問題があることを示します(ユーザーは認証されていないか、間違って認証されています)。有効な資格情報を入力して再試行できます。同時に、403はアクセス許可に問題があることを意味します。サーバーはユーザーが誰であるかを知っていますが、アクセスを拒否します。同じ資格情報で再試行しないでください。
OWIN CookieAuthenticationがそこに着くだけで、401エラーコードが返されるのを待ち受けます。このようなコードが検出された場合、応答はリターンアドレスを維持してログインページにリダイレクトされます。
AuthorizeAttributeの名前にもかかわらず、実際には401ステータスコードが生成されます。 https://github.com/ASP-NET-MVC/aspnetwebstack/blob/master/src/System.Web.Http/AuthorizeAttribute.cs#L155
したがって、ログインページに移動します。
これを変更したい場合は、独自のAuthorizeAttributeを実装する必要があります。その後、ユーザーがすでにログインしているかどうかを確認して、403ステータスを返すことができます。ユーザーがログインしていない場合は、401を返すだけです。
なぜそんなことが期待されますか?ユーザーとしては、アクセスしていないリソースにアクセスするたびに再ログインする必要がある場合、私は少し怒っていました。カスタムAuthorizeAttributeを使用して行うことはできますが、それは可能でしょうか? –
私はあなたのポイントを参照してください。私はそれをもう少し詳しく説明する必要があります:私はあなたと完全にユーザーの経験の観点から同意します。私が実際に言いたかったのは、すでにログインページにリダイレクトされていれば、すでにログインしているユーザーのログインのポイントは何ですか?それは本当に悪いですか?一方、完全な適切な解決策はもちろん、カスタムの「アクセス拒否」ページにリダイレクトすることです。 Btw、それはどこに設定されていますか? –
私はあなたの質問を完全に理解することができません。制限されたページにアクセスした場合、どのようにログオフする必要がありますか?ユーザーがログに記録される唯一の方法は、クッキーが死んだとき、または認証マネージャー(authenticationManager.SignOut) – SaadK