2014-02-19 28 views
1

我們正在使用SocialAuthSpring 3進行身份驗證,並且存在重定向之間的會話問題。將會話對象存儲在重定向之間

當我們做控制器return "redirect:myURL";(後驗證)重定向發生正常,但非常頻繁重定向創造新session實例,而不是使用我目前session當我看某些變量我已經存儲在session導致NullPointerException

我已經添加了幾條System.out聲明來證明正在創建新的session

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

我怎麼能存儲在Spring應用程序上下文當前session之前重定向和基於會話ID重定向後使用它呢?有沒有其他方法可以在Spring中解決這個問題?

回答

1

看看RedirectAttributes在Spring中的接口,它的構建是爲了您要實現的相同目的。這基本上保留了重定向之間的值,因此將消除您在會話中放置屬性然後獲取它們的需要。

這裏的鏈接

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'存儲內部存儲在會話中的對象flashmap,一旦重定向完成,這些變量就會被移除,而'addAttribute'從你的屬性創建請求參數 –