0

Grails 2.2.3Tomcat 7 サーブレット コンテナーでバックエンドを使用して Ajax Web アプリケーションを開発しています。IDE からアプリケーションを実行するとgrails run、すべてが魅力的に機能しました ( tomcat-grails-pluginTomcat 7 実装を提供する を使用しています)。

アプリケーションをスタンドアロンの Tomcat 7 にデプロイすると、HttpSessionTomcat が Ajax リクエストごとにまったく新しいセッションを作成するため、セッション オブジェクトを操作できなくなります。Tomcat 7 で Ajax アプリケーションをデプロイしているのは私だけではないと思うので、この問題を解決する方法について誰かアドバイスをいただけないでしょうか?

セッションの操作をまったく不可能にすることで、セッションの固定化を防止するという偉大な発明はありますか?

セッションに関連するデータを保存できHttpSessionない場合、この動作により、セッションのアイデアは不条理になります(私の意見では)。

私は何か間違っているのですか?私は何か間違ったことをしていますか?


アップデート

いくつかの調査の結果、リクエストのみがTomcatで新しいセッションの作成をトリガーすることがわかりましたPOST...誰もこの動作を説明できますか?

4

1 に答える 1

0

さらに調査した後 (オーセンティケーター クラスのソース コード ( http://svn.apache.org/repos/asf/tomcat/tc7.0.x/trunk/java/org/apache/catalina/authenticator/ ) を使用しても) )同じ[エンジン] / [ホスト]内の他のすべてのWebアプリケーションに影響を与えるファイルでRealm宣言されたものを使用して何かを行う必要があり、デフォルトでTomcat Managerで使用されることに気付きました。server.xml

リクエストを送信GETするだけですべてうまくいきますが、POSTリクエストを送信すると新しいSessionものが作成されますが、現在のページを変更していないため (いわゆる「シングルページアプリケーション」であるため、常にオンです)同じindex.gspページ)Tomcatはそれをログイン試行の失敗として扱い、リクエストSessionごとに新しいオブジェクトを作成し続けますPOST-そして私のページにはたくさんのPOSTsがあります;)

そのため、簡単な修正として、webappsディレクトリからマネージャーを削除し、自分のバックエンドでのログイン試行が成功したときに既に新しいものを作成しているため、Realm宣言を削除しました。server.xmlSessionGrails

于 2013-08-01T06:51:31.210 に答える