ユーザーがログインしておらず、[Authorize]
と表示されたアクションを要求した場合、レスポンスはAccount/LogOnアクション(ステータスコード302 Found)へのリダイレクトです。リダイレクトではなく、禁止状態コード403でAuthorizeAttributeを応答させる方法はありますか?
レスポンスをステータスコード403にする方法はありますか?
ユーザーがログインしておらず、[Authorize]
と表示されたアクションを要求した場合、レスポンスはAccount/LogOnアクション(ステータスコード302 Found)へのリダイレクトです。リダイレクトではなく、禁止状態コード403でAuthorizeAttributeを応答させる方法はありますか?
レスポンスをステータスコード403にする方法はありますか?
AuthorizeAttribute
を継承するアクションフィルタを作成します。次に、この方法を無効にします。
ユーザーがログインしていない場合、より適切なステータスコードは401:Unauthorizedです。これは、デフォルトでAuthorizeAttributeが返すものです。
FormsAuthenticationModuleはこの戻りコードをキャッチし、リダイレクトに変換します。無効にすることができます(またはそれをロードしない場合)、これは呼び出し元に返されます。
これはRESTインターフェイス用ですか? –
@クリス:いいえ、しかし好奇心からなぜあなたは尋ねますか?私は、ユーザーがLogOnアクションにリダイレクトするのではなく、ログインしていない場合、単にリクエストを禁止したいHttpPostアクションを作成していました。 –
FYI - [Authorize] *は403禁止を返送します。 FormsAuthenticationModuleは403応答をトラップし、ログインページへのリダイレクトに変換します。フォーム認証を使用していない場合、FormsAuthenticationModuleがこのロジックを実行しないように、Web.configのセクションにこれを反映させることができます。 –
Levi