0

Web アプリケーションでユーザーが正常に認証された場合にのみセッションを作成したいと考えています。しかし、ログインページにアクセスしただけなのに、何らかの理由で struts2 がセッションオブジェクトを作成します。

struts2 のドキュメントをいくつか調べたところ、struts.custom.i18n.resources を使用するとセッションが作成される可能性があることがわかりました。そのため、struts.xml ファイルから削除しました。しかし、私のWebアプリケーションでセッションが作成されているにもかかわらず.

これに関するヘルプ/考えは本当に感謝しています。

更新された質問

Cayenne データ コンテキストを操作するために、web.xml に次の行がありました。

<filter>
    <filter-name>CayenneFilter</filter-name>
    <filter-class>org.apache.cayenne.conf.WebApplicationContextFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>CayenneFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

これにより、Web アプリケーションでセッションが作成されますか?

-ナレンドラ

4

2 に答える 2

4

JSP ページは、セッションを作成しないように指示するディレクティブを具体的に含めない限り、自動的にセッションを作成します。

セッションの作成を阻止しようとする IMO は時間の無駄です。代わりに、有効なログイン時にセッションに何かを置きログアウト時にセッションを無効にします。それ以外は仕事が多すぎる。

于 2012-11-06T16:59:59.840 に答える
2

これがカイエンの観点からの答えです。デフォルトでは、WebApplicationContextFilter は、フィルタが一致する各リクエストに対して、セッション バインドされた ObjectContext を遅延して作成します。もちろん、これにより HttpSession が作成されます。

そのため、1 つの解決策は、フィルター マッピングを "/*" から、認証されたページに対応するより具体的な URL に減らすことです。これにより、匿名ユーザーに対して Cayenne フィルターが呼び出されなくなります。

これができない場合は、WebApplicationContextFilter の独自のバージョンを作成します (結局のところ、WebApplicationContextFilter はアプリで Cayenne をブートストラップする方法の一例にすぎないため、そのソースを確認して、同様のものを作成してください)。独自のフィルターは、匿名の ObjectContext (およびセッション) の作成をスキップするいくつかのロジックを実装できます。

于 2012-11-07T15:02:20.047 に答える