私は現在、(Zend Framework を使用して) Web アプリケーションを構築しており、次のような基本的なHTTP ステータスコードのいくつかを取得しています。
- コントローラー/アクションが見つからない場合の 404
- サーバー例外で 500
- Apache から返された 3xx
現時点では、ユーザーが特定のリソースへのアクセスを許可されていることを確認する基本的なACLチェックを実装しました。これはコントローラー プラグインとして実装され、routeShutdown イベントで実行されます。次のように機能します。
- ユーザーの役割を取得します。ユーザーがログインしていない場合は、「ゲスト」の役割を割り当てます
ユーザーのルールがリソースへのアクセス権を持っていることを確認してください
2.1. がリソースにアクセスできず、ゲストである場合は、アクセスしようとしていたリソースを保存し、ログイン プロンプトに転送します。認証情報を提供すると、(HTTP リダイレクト ステータス コードを介して) 元のリソースにリダイレクトされます。
2.2. ユーザーが認証され、ACL がリソースへのアクセスを拒否した場合、ユーザーはエラー コントローラーに転送され、noPrivilegies と呼ばれるアクションに転送されます。
ユーザーがアクセス権を持っている場合は、リクエストを通常どおり続行します。
さて、私の質問:
- 2.1 シナリオで HTTP 401 を使用できますか? クライアントから送信された WWW-Authenticate ヘッダー フィールドが必要なわけではありません。ログインフォームからログインするだけです。しかし、彼は要求されたリソースにアクセスできなかったため、要求は 200 OK ではなかったと思います。
- 2.2 シナリオで HTTP 401 を使用できますか? ここでも同じ理由で、WWW-Authenticate は役に立ちません。おそらく、HTTP 403 Forbidden を使用する方が良いでしょうか?
- これら 2 つのシナリオについて、他に推奨するステータス コードはありますか?
- アプリケーションから通常返されるその他のステータス コードは何ですか?また、それらが適用されるのはいつですか?