3

Tomcat 7 で実行されている私の grails アプリケーションでは、どこかで既存の http セッション ( ) を無効にsession.invalidate()し、新しいセッション ( ) を作成していrequest.getSession(true)ます。

しかし、私のこの新しいセッションは、grails アプリケーションのどこにも反映されていません。このため、「Session already invalidated」が表示されます。

request.getSession()どこでもやりたくない。私はちょうど「セッション」を使用しています。

この新しいセッションがアプリのあらゆる場所に反映されるように、Grails 1.3.7 には何かありますか?

さらに情報が必要な場合はお知らせください。

よろしく

4

1 に答える 1

5

そうですね、Grailsはセッションオブジェクトへの参照を保持しており、セッションを要求するたびに同じ参照を返します。したがって、セッションを無効にしてからセッションを要求すると、同じ無効化されたセッションが返され、'sessionが発生します。すでに無効化された'例外。

これはあなたのために働くはずです。

session.invalidateを実行した直後に次の行を実行します

//Trick - so that grails doesn't use old invalidated session but rather create new.
GrailsWebRequest.lookup(request).session = null

その後、通常どおりにセッションを使用できます。新しいセッションを自分で作成する必要はありません。

内部についてはこのスレッドを参照してください

于 2012-08-16T08:29:26.050 に答える