2012-07-26 66 views
1

我有一個登錄表單,其中有一個選項「讓我登錄」。如果用戶選中此選項並按登錄按鈕。然後我想我可以將用戶名和密碼保存在一個cookie中併發送給用戶計算機。然後,當用戶再次打開網站時,我可以檢查該cookie是否存在於用戶計算機中,如果它是從cookie中獲取用戶名和密碼並登錄用戶。但問題是我怎樣才能發送cookie到用戶計算機?我所知道的。您可以設置cookie以這種方式如何實現JSF 2.0中的自動登錄功能

Cookie userCookie = new Cookie("userCookie", "loginUser"); 
//sessionCookie.setMaxAge(60 * 15); 
userCookie.setPath("/"); 
httpServletResponse.addCookie(userCookie); 

如果我不設置setMaxAge那麼它是一個瀏覽器層級的Cookie,即當用戶關閉瀏覽器,則cookie將被刪除。我怎樣才能發送cookie到用戶計算機,並從用戶計算機自動登錄?

感謝

+0

http://stackoverflow.com/questions/5836413/cookies-for-remember-me-in-jsf的可能重複。你可以看看實現的附加鏈接。 – Ravi 2012-07-26 14:34:22

回答

0

無論哪種方式,你應該永遠,永遠,永遠保存在cookie中的密碼!

這裏是關於persitent餅乾一篇好文:Persistent Login Cookie Best Practicehttp://fishbowl.pastiche.org/2004/01/19/persistent_login_cookie_best_practice/

從文章的要領:

房地

  • Cookies是脆弱的。在常見的瀏覽器cookie-盜竊 漏洞和跨站點腳本攻擊之間,我們必須接受 cookie不安全
  • 持久性登錄cookie本身具有足夠的身份驗證來訪問網站。它們相當於一個有效的用戶名和密碼合併成一個
  • 用戶重用密碼。因此,任何登錄cookie,從中可以恢復用戶的密碼適用於飲鴆止渴一個顯著更具潛力,從中可以不
  • 綁定永久性cookies來一個特定的IP地址,使他們不能在很多常見的情況特別執着
  • 一用戶可能希望在不同的機器上的多個Web瀏覽器永久性Cookie同時

筆者建議將用戶名與一個大的隨機數,這是一種常見的做法聯繫起來。

+0

hhmmm謝謝。該網站提到,「Cookie應該由用戶的用戶名,後面跟着一個分隔符,然後是一些大的隨機數(128位看起來令人難以置信,足以被接受)。服務器保留一個數字 - >用戶名關聯表。我知道我的userName用戶在文本字段中輸入(比如說Basit)。所以我理解的是,製作了一個像「Basit-67 * 98」這樣的cookie。那我該如何實現這個表,即'服務器保存一個數字 - >用戶名關聯表'。意思是在創建cookie後保存這個名字,即數據庫中的'Basit-67 * 98'也是如此? – Basit 2012-07-26 11:08:23

+0

下次用戶打開網站,我會得到cookie,然後檢查數據庫中的cookie值,如果存在,然後登錄用戶,然後再次channge名稱,如'Basit-45 * 23'?是嗎? – Basit 2012-07-26 11:10:18

+0

關於他號碼的要點是它必須是* random *。如果他知道你的用戶名,那麼somebady可能會「猜出」一個有效的數字的可能性越小。 該表可以由三列組成:用戶名,號碼和到期日期。當用戶進入該網站時,cookie被髮送。用戶名和號碼從中提取出來(通過在分隔符char處分割)。服務器查找是否有用戶名和號碼組合的條目。如果到期日尚未到達,則Cookie被認爲是有效的 - >服務器將用戶登錄到 – tasel 2012-07-26 14:45:55