18

ユーザーを認証し、登録後にアカウントがアクティブ化されていないことを確認した後、どのHTTPステータスコードで応答する必要がありますか?

4

3 に答える 3

29

401は、ユーザーが不明であることを意味します(認証されていないか、正しく認証されていません。たとえば、資格情報が無効です)。
403は、ユーザーは既知であるが許可されていない(つまり、適切な役割/グループを持っていない)ことを意味します。

また、登録されているが非アクティブ化されているアカウントを、「INACTIVE」などの特定の役割を持っているユーザーや適切な役割を持たないユーザーとして解釈することもできます。特定のケースでは、403の方が適切です。

于 2013-03-25T18:15:08.157 に答える
1

有効化されていないアカウントを承認する必要がないと判断した場合、応答には確実に401Unauthorizedステータスコードが含まれている必要があります。

はい、 403Forbiddenも適切だと思います。ただし、あなたの場合は、401Unauthorizedの方が適切だと思います。

この回答は、この2つを非常によく要約しており、401Unauthorizedについてこれを引用しています。

要求にすでに許可資格情報が含まれている場合、401応答は、それらの資格情報の許可が拒否されたことを示します。

あなたのケースが彼らが資格情報を提供したことを示唆しているが、アカウントがアクティブ化されていないのでそれらの資格情報は有効ではないので、それは確かに当てはまります(あなたは許可されていないとみなします)。

于 2013-03-25T17:12:11.667 に答える
1

@Josh Davenport:お互いの代わりに承認と認証について説明しました。認証は資格情報の確認であり、承認は役割/グループの割り当てです。

一方、あなたが自分自身へのコメントで述べたように、401は一度に失敗した認証と承認の両方を想定しています。ユーザーは401を取得するために両方に失敗する必要があります。403は、データが完全に禁止されており、認証がまったく実行されていない/必要ない場合に使用されます。

例えとして:401=資格情報がチェックされるチェックポイント。403 =一時停止の標識、入力できません。

OPの質問に答えるには、401は論理的に非アクティブ化されたアカウントのステータスコードですが、HTTP-Authの実装が必要なため、他の方法で認証および承認する場合は、代わりに403を使用できます。標準は必ずしもすべての現実の状況を網羅しているわけではないので、私は個人的にはまだ401に固執します。現在、認証目的でHTTP-Authを使用する人はほとんどいません。

于 2013-03-26T07:36:03.993 に答える