2014-02-19 3 views
1

Мы используем SocialAuth для аутентификации с Spring 3 и имеем проблемы с сеансами между переадресацией.Хранить объекты сеанса между переадресацией

Когда мы делаем return "redirect:myURL"; в контроллере (после аутентификации) Перенаправление происходит должным образом, но, очень часто перенаправление создания нового экземпляра session вместо того, чтобы использовать мой текущий session, что приводит к NullPointerException, когда я смотрю на некоторые переменный я хранящийся в session.

Я добавил несколько сообщений System.out, чтобы доказать, что создается новое session.

Session id is before authentication...E7557680F892C6776F36691E9DF93CF5 
session ID after authentication and redirct....  726C2EE5C240BDE4D217CBFDB9C47A0F 

Как я могу сохранить текущий session в контексте приложения Spring, прежде чем перенаправлять и использовать его после редиректа на основе идентификатора сеанса? Есть ли другой способ, которым мы можем справиться с этим весной?

ответ

1

Посмотрите на RedirectAttributes Интерфейс весной, он построен для той же цели, которую вы пытаетесь реализовать. Это в основном сохраняет значения между переадресациями и, следовательно, избавит вас от необходимости добавлять атрибуты в сеанс, а затем получать их.

Вот ссылка

http://docs.spring.io/spring/docs/3.1.x/javadoc-api/org/springframework/web/servlet/mvc/support/RedirectAttributes.html

+0

Спасибо за ответ. Попробуй это. – kosa

+0

Какова область действия этих RedirectAttributes? Это сеанс? Если это так, это может не работать в моем случае. – kosa

+1

Если вы посмотрите на API, вы, как правило, получите два метода 'addFlashAttribute' и' addAttribute'. 'addFlashAttribute' хранит флэш-карту объекта, которая внутренне хранится в сеансе, эти переменные удаляются после завершения перенаправления, а' addAttribute' создает параметры запроса из ваших атрибутов –

Смежные вопросы