6

Tomcat環境でJavaサーブレットを学習しています。j_security_checkを使用してフォームベースのログイン認証を使用する方法を学んでいます。したがって、サーブレットには、j_usernameとj_passwordを持つログインページがあります。そのサーブレットのweb.xmlファイルには、ランディングページ「landing.html」を示すウェルカムページリストがあります。したがって、理想的には、ログインに成功した後、ユーザーが「landing.html」ページにリダイレクトされるようにします。

認証がない場合(フォームベースの認証なし)、Myサーブレットが開き、期待どおりに「landing.html」ページに移動します(「localhost:8080 / MyServlet」-landing.htmlのコンテンツが表示されます)。

ただし、j_security_checkで正常にログインした後、何らかの理由で、「landing.html」ファイルの.cssファイルに自動的にリダイレクトされます。なぜこれが起こっているのか理解できません。

認証が成功した後に「landing.html」ページをロードし、他の場所に転送しないようにサーバーに指示する特定の方法はありますか?

編集

*わかりました、解決しました。認証が成功した後にロードされていたcssファイルは<head></head>、j_usernameとj_passwordがあるlogin.htmlページのタグ内にリストされていました。ログインページのデザインをWebサイトの他の部分と一致させるために、そのcssファイルを追加しました。私の推測では、サーバーが必要なリソースを再ロードしているとき、何らかの理由で、headタグから最上位のcssファイルを再ロードしているだけだったと思います。本当に変だ。それで、j_security_checkはTomcatでWebサイトの認証を行うための最良の方法ですか、それともより優れた、より信頼性の高い方法がありますか?*

4

1 に答える 1

11

フォームベース認証の動作は次のとおりです。

  • ブラウザは保護された URL にリクエストを送信します
  • サーバーはそのリクエストを傍受し、認証されていないことを確認し、loginf フォーム ページにリダイレクトします。
  • ユーザーがログインする
  • サーバーは、認証をトリガーした URL (最初のステップで要求された保護された URL) にリダイレクトします。

ユーザーは保護されたページをブックマークし、翌日このブックマークされたページに戻ってログインし、ようこそページではなくブックマークされたページに直接移動できるため、これは良いことです。

私の推測では、ランディング ページは保護されていませんが、その CSS ファイルは保護されています。したがって、認証をトリガーするリクエストは、CSS ファイルをロードしようとするリクエストであり、ユーザーは CSS ファイルにリダイレクトされます。

于 2012-03-02T08:19:44.443 に答える