2

ユーザーログインが必要な Web アプリケーションを作成しています。お気づきかもしれませんが、無効なユーザー認証情報に対応するワークフローは多数あります。ほとんどのブラウザーは、資格情報ストレージに (受け入れられた) ユーザー資格情報を格納することができます。

私の元の質問は2つの部分に分かれています:

  1. サイトでログイン ユーザーが必要な場合、どの HTTP ステータス コードをユーザーに送信する必要がありますか? ユーザーが自分でログイン ページを要求しているという意味ではありません。
  2. ユーザーが無効な認証情報を入力した場合、どの HTTP ステータス コードをユーザーに送信する必要がありますか?

HTTP 401 は、私が推測するブラウザプロンプトを介した「古いスタイル」の認証専用です。これらのブラウザプロンプトを取り除くために、独自のログインページを使用しています。

4

2 に答える 2

2

認証には多くの規格があります。ここで見つけることができるいくつかの例: http://docs.oracle.com/javaee/1.4/tutorial/doc/Security5.html 説明したエラーコード 401 は基本認証に使用されます。古いものではありません:)。

独自のログイン フォームを使用する場合は、標準のフォーム認証フローに従ってください。

  1. ユーザーが認証なしで保護されたリソースにアクセスすると、ログイン ページにリダイレクトされます (HTTP コード 302)。
  2. ログインページを表示します (HTTP コード 200)。ユーザー名を専用 URL に送信します (通常は j_security_check です)。
  3. 認証が成功すると、元の保護されたリソースにリダイレクトされます (HTTP コード 302)。
  4. 認証に失敗した後、ログイン ページにエラー コード (HTTP コード 200) が表示されます。
  5. ユーザーが認証後に保護されたリソースにアクセスすると、リソースが表示されます (HTTP コード 200)

認証されたセッションと認証されていないセッションを区別するには、HTTP Cookie を使用できます。ユーザー情報 (ユーザー名など) ではなく、GUID を使用することをお勧めします。

于 2013-04-13T13:04:49.840 に答える
0

関連するステータス コードは、401 Unauthorized / 407 Proxy Authentication Required のみです。

401 Unauthorized は、リソースへのアクセスを拒否している場合にのみ表示する必要があります。リダイレクトしたり、ログイン ページを表示したりする場合は表示されません。

407 は、認証が外部サービスによって処理されることを期待していることと、Proxy-Authenticate ヘッダー フィールドが提供されることを期待していることを除いて、401 と同じです。

より一般的には、ユーザーに 200 OK とログイン ページを提示します。

于 2013-04-13T12:20:04.170 に答える