實現Java Web程式的自動登入

2021-04-18 04:17:53 字數 2106 閱讀 2675

有很多web程式中第一次登入後,在一定時間內(如2個小時)再次訪問同乙個web程式時就無需再次登入,而是直接進入程式的主介面(僅限於本機)。實現這個功能關鍵就是服務端要識別客戶的身份。而用cookie是最簡單的身從驗證。

如果使用者第一次登入,可以將使用者名稱作為cookie寫到本地,**如下:

cookie cookie = new cookie("user", user);

cookie.setmaxage(365 * 24 * 3600);

cookie.setpath("/");

response.addcookie(cookie);

當使用者再次訪問程式時,服務端程式應該檢測這個cookie是否存在,**如下:

cookie cookies=request.getcookies();

for(cookie cookie: cookies)

}儘管從客戶端可以獲得user cookie,但這上cookie可能存在很長時間,而且僅憑這個cookie就自動登入並不安全,因此,可以在服務端使用乙個session來管理使用者。也就是當第一次登入成功後,就建立乙個session,並將使用者的某些資訊儲存在session順。**如下:

session.setmaxinactiveinterval(2 * 3600); // session儲存兩小時

當再次訪問程式時,確定了cookie存在後,就會繼續驗證user session的存在,**如下:

cookie cookies=request.getcookies();

for(cookie cookie: cookies)

else}}

雖然上面的**可以很好地實現自動登入功能,但是當瀏覽器關閉,再次啟動後,由於servlet用於儲存session id的jsessionid cookie是臨時的(也就是說不是持久cookie,當瀏覽器關閉後,這個cookie就會被刪除),因此,需要將jsessionid進行持久化。**如下:

session.setmaxinactiveinterval(2 * 3600); // session儲存兩小時

cookie cookie = new cookie("jsessionid", session.getid());

cookie.setmaxage(2 * 3600); // 客戶端的jsessionid也儲存兩小時

session.setmaxinactiveinterval(interval)

cookie.setpath("/");

response.addcookie(cookie);

如果使用上面的**,即使瀏覽器關閉,在兩小時之內,web程式仍然可以自動登入。

如果我們自已加乙個jsessionid cookie,在第一次訪問web程式時,http響應頭有兩個jsessionid,但由於這兩個jsessionid的值完全一樣,因此,並沒有任何影響。如果在響應頭的set-cookie欄位中有多個相同的cookie,則按著path和name進行比較,如果這兩個值相同,則認為是同乙個cookie,最後乙個出現的cookie將覆蓋前面相同的cookie,如下面的兩個cookie,最後乙個將覆蓋前乙個:

set-cookie: jsessionid=ddb2274cac6739e1d6747b0043d5d90e; path=/web

set-cookie: jsessionid=mysession; expires=thu, 05-jun-2008 05:02:50 gmt; path=/web

由於下面兩個cookie的path不同,因此,它們是完全不同的兩個cookie:

set-cookie: jsessionid=ddb2274cac6739e1d6747b0043d5d90e; path=/web1

set-cookie: jsessionid=mysession; expires=thu, 05-jun-2008 05:02:50 gmt; path=/web

實現Java Web程式的自動登入

有很多web 程式中第一次登入後,在一定時間內 如2 個小時 再次訪問同乙個web 程式時就無需再次登入,而是直接進入程式的主介面 僅限於本機 實現這個功能關鍵就是服務端要識別客戶的身份。而用cookie 是最簡單的身從驗證。如果使用者第一次登入,可以將使用者名稱作為cookie 寫到本地,如下 c...

實現Java Web程式的自動登入

有很多web 程式中第一次登入後,在一定時間內 如2 個小時 再次訪問同乙個web 程式時就無需再次登入,而是直接進入程式的主介面 僅限於本機 實現這個功能關鍵就是服務端要識別客戶的身份。而用cookie 是最簡單的身從驗證。如果使用者第一次登入,可以將使用者名稱作為cookie 寫到本地,如下 c...

實現Java Web程式的自動登入

有很多web 程式中第一次登入後,在一定時間內 如2 個小時 再次訪問同乙個web 程式時就無需再次登入,而是直接進入程式的主介面 僅限於本機 實現這個功能關鍵就是服務端要識別客戶的身份。而用cookie 是最簡單的身從驗證。如果使用者第一次登入,可以將使用者名稱作為cookie 寫到本地,如下 c...