2012-08-07 37 views
4

UPDATE1:的Java Play2 - 從會話使用網站

能給我如何在play2管理cookie和session很短的例子嗎? (記住我的功能)

好吧我想我理解播放驗證背後的主要概念。

Zentasks使用會話。我知道會話只存儲在服務器上。 Play2中的會話已經簽名。餅乾不是。

如果用戶希望即使他關閉瀏覽器也要登錄,該怎麼辦?

我需要使用cookie。

我該怎麼辦?

我是否創建了一個創建會話的cookie?

例如

  • 用戶有一個有效的cookie
  • 得到餅乾VAL並創建一個新的會話

還是我完全丟棄會話並只用餅乾代替。因爲cookie不是由play2自動簽名的,所以我必須自己做,我也是這麼做的。

response().setCookie("remember",Crypto.sign(rnd) + "-" + obj.getClass().getName() + "-" + rnd,12000); 

(我知道我沒有做它用安全和http僅標誌又安全)

我只是不希望發明一種新的和有缺陷的系統。我希望你能爲我清楚如何在play2中進行身份驗證。

+0

沒有什麼地方「我sorries」;)我編輯您的文章。現在,請解釋一下,這是什麼意思,'用戶想要一個cookie'? – biesior 2012-08-07 13:44:46

+0

爲什麼要求用戶進行技術實施?只要確保創建一個工作和響應應用程序! BTW會話總是由cookies管理:http://stackoverflow.com/questions/6398715/difference-between-creating-a-session-and-a-cookie – adis 2012-08-07 13:46:45

+0

@biesior我編輯了我的文章。 (用戶想要一個cookie?) - >(如果用戶想要關閉瀏覽器也想登錄會怎麼樣?) – 2012-08-07 13:48:11

回答

3

在玩的session scope無非是簽署(安全)餅乾

從上面的文檔(和它們存儲在客戶端的,服務器端!):

瞭解這一點很重要該會話和閃存數據不是 存儲在服務器中,但被添加到每個後續HTTP請求, 使用Cookie。

因此,您可以通過檢查session scope's key是否存在並匹配您的任何用戶來保留logged in狀態。

事實上的會話範圍不會自動到期,所以你的用戶會logged in,直到他將在logout行動點擊鏈接(在你只需要銷燬會話的密鑰)(只在某些瀏覽器)

+0

好的謝謝,但是如果關閉瀏覽器,我的會話就不見了。我怎樣才能防止這一點? – 2012-08-07 14:10:02

+0

@MaikKlein:你看過了嗎?我只是在測試,即使在瀏覽器關閉並清除整個內存之後,會話範圍也是可用的。所以你應該擔心,如果需要的話如何摧毀它) – biesior 2012-08-07 14:25:47

+0

真的嗎?我再次檢查它。我總是失去「餅乾」。我試過IE和Chrome。我用命令 - >運行 – 2012-08-07 14:31:31