ユーザーがログインしておらず、 とマークされたアクションを要求した[Authorize]
場合、応答は Account/LogOn アクション (ステータス コード 302 Found) へのリダイレクトです。
代わりに、応答をステータス コード 403 Forbidden にする方法はありますか?
ユーザーがログインしておらず、 とマークされたアクションを要求した[Authorize]
場合、応答は Account/LogOn アクション (ステータス コード 302 Found) へのリダイレクトです。
代わりに、応答をステータス コード 403 Forbidden にする方法はありますか?
から継承するアクションフィルターを作成しますAuthorizeAttribute
。次に、このメソッドをオーバーライドします。
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
Response.StatusCode = 403;
Response.Status = "Forbidden";
Response.StatusDescription = "Forbidden";
Response.End();
Response.Close();
}
ユーザーがログインしていない場合、より適切なステータス コードは 401:Unauthorized です。これは、デフォルトで AuthorizeAttribute が返すものです。
FormsAuthenticationModule は、このリターン コードをキャッチし、リダイレクトに変換します。無効にできる場合 (またはロードすることさえできない場合)、これは呼び出し元に返されます。