2013-02-20 41 views
5

我有一款Play 2.0.4網絡應用程序,它使用SecureSocial來允許用戶通過第三方提供商(如twitter,facebook和gmail)登錄。那時,我沒有使用我自己的UsernamePasswordProvider;也許我會在稍後添加它。如何讓SecureSocial用戶登錄?

我需要我的用戶長時間保持登錄狀態,也許一週。就我而言,用戶會話僅用於各種便利功能(如自定義),因此與長時間會話相關的風險肯定比不必每次登錄都方便。

它看起來像當前會話存儲在臨時cookie中,當用戶終止瀏覽器時會消失。在配置文件中有一個sessionTimeOut參數,但它的目的似乎是在長時間保持打開的瀏覽器中終止會話。至少,當我關閉並重新打開瀏覽器時,會話立即中斷,即使此超時設置爲大數目。

保持用戶長時間登錄的推薦方法是什麼?

+0

它看起來像我可以完全擺脫securesocial並使用抄寫員的基本需求,然後手動設置會話cookie。大約相同數量的代碼,但對行爲有更多的控制權。 – AlexR 2013-02-21 07:58:45

回答

3

來自master(for Play 2.1)的最新快照有一個新屬性,如果需要的話,認證器cookie將保持持久性。在你的配置文件中,你可以添加:

securesocial.cookie.makeTransient=false 
securesocial.cookie.absoluteTimeoutInMinutes=1440 
securesocial.cookie.idleTimeoutInMinutes=1440 

這將使cookie保持持久性並使會話持續24小時。

+0

您能否爲此提供解決方案?謝謝。 – user237865 2013-04-23 16:18:34

+1

我剛剛擴大了答案。這應該更清楚。 – Jorge 2013-04-24 00:55:22

2

對於播放2.2你需要添加的cookie部分securesocial.conf像文件:

cookie { 
    name=id 
    path=/ 
    httpOnly=true 
    idleTimeoutInMinutes=1440 
    absoluteTimeoutInMinutes=1440 
} 
2

的CONFIGS的定義,在這裏的: CookieAuthenticator

你可以將鼠標放在變量,看看如何配置被使用。

兩個配置:absoluteTimeout和的idleTimeout用於不同的目的,什麼時候該cookie可以看出這line控件有效

所以我建議你使用一個更大的值absoluteTimeoutInMinutes其中一個比另一個

相關問題