HttpSession в приложении Grails

В моем приложении grails, работающем на tomcat 7, я где-то аннулирую существующий сеанс http (session.invalidate()) и создаю новый сеанс (request.getSession(true)).

Но мой этот новый сеанс не везде отражается в приложении Grails. Из-за этого я получаю «Session already invalidated».

Я не хочу делать request.getSession() везде. Я просто использую «сеанс».

Есть ли что-нибудь в Grails 1.3.7, чтобы этот новый сеанс отражался везде в app.

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

С Уважением


person user1180463    schedule 16.08.2012    source источник


Ответы (1)


Что ж, Grails содержит ссылку на объект сеанса, и каждый раз, когда вы запрашиваете у него сеанс, он возвращает одну и ту же ссылку ... поэтому, если вы сделаете сеанс недействительным, а затем запросите сеанс, он вернет тот же недействительный сеанс и вызовет 'session уже недействительное исключение..

Это должно сработать для вас.

Выполните следующую строку Сразу после того, как вы сделаете session.invalidate

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

После этого вы можете использовать сеанс так же, как обычно. Вам не нужно создавать новый сеанс самостоятельно.

См. эту тему для внутренностей

person Sudhir N    schedule 16.08.2012
comment
Это отличный ответ. Спасибо Судхир. - person user1180463; 16.08.2012