我在我的web應用程序中實現了「記住我」功能。我使用包含使用RSA加密的用戶名/密碼的cookie來做到這一點。Cookie未被讀取
我在登錄時添加cookie;如果然後我註銷(沒有關閉瀏覽器)cookie被讀取好,並在登錄頁面我看到用戶名/密碼已經輸入。 但是,如果我關閉瀏覽器;或關閉選項卡並再次運行應用程序,當讀取cookie時,所讀取的唯一cookie是JSESSIONID。即使我可以在瀏覽器中看到它,帶有憑據的cookie也不在 ((HttpServletRequest)facesContext.getExternalContext().getRequest()).getCookies();
返回的數組中。這是爲什麼?
這是創建的cookie代碼:
String credentials = username + "?" + password;
Cookie c = CookieHandler.getInstance().createCookie("vtcred", credentials, rememberMe);
FacesContext facesContext = FacesContext.getCurrentInstance();
((HttpServletResponse) facesContext.getExternalContext().getResponse()).addCookie(c);
和方法的createCookie:
public Cookie createCookie(String name, String value, boolean rememberMe) {
value = encript(value);
Cookie credCookie = new Cookie(name, value);
credCookie.setHttpOnly(true);
if(rememberMe) {
credCookie.setMaxAge(86400);
}
else {
credCookie.setMaxAge(0);
}
return credCookie;
}
編輯:我設置cookie的最大年齡爲一天;並在瀏覽器中,我可以看到該Cookie將於明天到期,所以這不是問題提前
感謝, 達米安
EDIT2:這是很奇怪的,但它似乎是現在的工作。我會繼續測試並通知。謝謝。
存儲在cookie中的用戶名和密碼,加密與否,聽起來不像一個非常好的主意 – 2011-05-02 19:51:57
你可以發佈你設置cookie的代碼嗎? – Kal 2011-05-02 19:59:44
添加代碼@Kal @Matti Virkkunen,我知道這不是一個好主意,但在我的情況下,這是我獲得的唯一選擇,因爲我正在開發的Web應用程序只是現有系統的Web界面。我正在使用Web服務調用應用服務器(包含數據庫和大部分邏輯) – Damian 2011-05-02 20:27:08