1

私の Web アプリには、ユーザーが JSP 経由でログインする安全な領域があります。JSP はユーザー名とパスワードをサーブレットに送信し、サーブレットはユーザーの資格情報が有効かどうかを確認します。それらが有効な場合、ユーザーはセキュアなリソースに誘導されます。ユーザーが最初に検証せずに安全なリソースに移動できないようにするにはどうすればよいですか?

4

4 に答える 4

6

一般的なアプローチは、ユーザーのセッションでトークンを設定することです。

session.setAttribute("loggedIn", "true");

あるいは

session.setAttribute("loggedInUser", "someUserName");

保護する必要があるページで確認してください。保護するページにアタッチするサーブレット フィルタを使用してチェックを実行することをお勧めします。チェックに合格しない場合、フィルターはログイン ページにリダイレクトできます。ここも参照してください: http://java.sun.com/products/servlet/Filters.html

これは、認証にフィルターを使用することに関する良い記事です: http://www.developer.com/java/ent/article.php/3467801

于 2008-12-07T21:42:52.710 に答える
4

web.xml で security-contraint を使用するとどうなりますか :

<security-constraint>
      <web-resource-collection>
         <web-resource-name>Secure</web-resource-name>
         <url-pattern>/secure/*</url-pattern>
      </web-resource-collection>
于 2008-12-08T11:53:04.977 に答える
0

ユーザーが常に単一のサーブレットを介してアプリにアクセスするようにします。サーブレットはリクエストを JSP にディスパッチし、結果のレスポンスをブラウザに返します。この方法では、単一のエントリ ポイントがあるため、何が起こるかを常に制御できます。

別のアプローチは、認証を必要とするすべての JSP によってチェックされるセッション変数 (サーバー側、または Cookie 内) を持つことです。

于 2008-12-07T21:43:53.210 に答える
0

セキュリティを正しくするのは本当に難しいです。あなたが通常考えているよりもはるかに多く。フレームワーク ( Acegiが頭に浮かびます) の使用、またはLenW が指摘したweb.xml の標準の "" セクションは必須です! 少なくともフィルターを使用して、セキュリティの承認部分を処理してください。

単一のエントリポイントを使用するソリューションはあまり好きではありません(Rolf の提案による)。あなたのアーキテクチャに人為的な制約が課せられているように思えます。また、1 つの Web アプリケーションに複数のサーブレットを含めるには、多くの正当な理由があります。

何をするにしても、すべてのページで手動コードに依存する手法を使用しないでください (「if user_authentified ...」で始まるすべての JSP など)。どこかに置くのを忘れてしまいます...

于 2008-12-08T12:18:15.550 に答える