2012-03-02 30 views
5

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

認証(フォームベースの認証なし)がないと、私のサーブレットが開き、「landing.html」ページに移動します(「localhost:8080/MyServlet」 - landing.htmlの内容が表示されます)。

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

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

EDIT

*さて、私はそれを解決しました。 認証が成功した後に読み込まれたCSSファイルは、j_usernameとj_passwordがあるlogin.htmlページの<head></head>タグ内にリストされています。私は、ログインページのデザインを他のウェブサイトと同じにするために、そのCSSファイルを追加しました。私の推測では、サーバーが必要なリソースを再ロードしているときに何らかの理由でheadタグからトップCSSファイルを再ロードしていただけです。 本当に奇妙です。 だから、のj_security_check Tomcat上でWebサイトのいずれかの認証を行うための最善の方法があるか、そこには品質、信頼性の高い方法である*

答えて

10

フォームベース認証の動作は以下の通りです:?

  • でブラウザが保護されたURL、サーバーがその要求をインターセプト
  • に要求を送信し、あなたが認証されていないことを見て、loginfフォームページにリダイレクト
  • ユーザがログインするには、サーバーが起動されたURLにリダイレクトしますt彼は認証:最初のステップで尋ねられた保護されたURL。

これは、ユーザーが保護されたページをブックマークし、このブックマークされたページに戻って来て、ログインして、ウェルカムページではなくブックマークページに直接移動できるためです。

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

関連する問題