7

ユーザーがログインしておらず、[Authorize]と表示されたアクションを要求した場合、レスポンスはAccount/LogOnアクション(ステータスコード302 Found)へのリダイレクトです。リダイレクトではなく、禁止状態コード403でAuthorizeAttributeを応答させる方法はありますか?

レスポンスをステータスコード403にする方法はありますか?

+0

これはRESTインターフェイス用ですか? –

+0

@クリス:いいえ、しかし好奇心からなぜあなたは尋ねますか?私は、ユーザーがLogOnアクションにリダイレクトするのではなく、ログインしていない場合、単にリクエストを禁止したいHttpPostアクションを作成していました。 –

+4

FYI - [Authorize] *は403禁止を返送します。 FormsAuthenticationModuleは403応答をトラップし、ログインページへのリダイレクトに変換します。フォーム認証を使用していない場合、FormsAuthenticationModuleがこのロジックを実行しないように、Web.configのセクションにこれを反映させることができます。 – Levi

答えて

10

AuthorizeAttributeを継承するアクションフィルタを作成します。次に、この方法を無効にします。

1

ユーザーがログインしていない場合、より適切なステータスコードは401:Unauthorizedです。これは、デフォルトでAuthorizeAttributeが返すものです。

FormsAuthenticationModuleはこの戻りコードをキャッチし、リダイレクトに変換します。無効にすることができます(またはそれをロードしない場合)、これは呼び出し元に返されます。

関連する問題