亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 1158 | 回復(fù): 0
打印 上一主題 下一主題

轉(zhuǎn)載java實(shí)現(xiàn)自動(dòng)登陸 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2008-11-27 09:09 |只看該作者 |倒序?yàn)g覽
有很多Web程序中第一次登錄后,在一定時(shí)間內(nèi)(如2個(gè)小時(shí))再次訪問(wèn)同一個(gè)Web程序時(shí)就無(wú)需再次登錄,而是直接進(jìn)入程序的主界面(僅限于本機(jī))。實(shí)現(xiàn)這個(gè)功能關(guān)鍵就是服務(wù)端要識(shí)別客戶的身份。而用Cookie是最簡(jiǎn)單的身從驗(yàn)證。
如果用戶第一次登錄,可以將用戶名作為Cookie寫(xiě)到本地,代碼如下:
Cookie cookie = new Cookie("user", user);
cookie.setMaxAge(365 * 24 * 3600);
cookie.setPath("/");
response.addCookie(cookie);
    當(dāng)用戶再次訪問(wèn)程序時(shí),服務(wù)端程序應(yīng)該檢測(cè)這個(gè)Cookie是否存在,代碼如下:
Cookie[] cookies=request.getCookies();
for(Cookie cookie: cookies)
{
    if(cookie.getName().equals(user))
    {
        // 如果user Cookie存在,進(jìn)行處理
        break;
    }
}
    盡管從客戶端可以獲得User Cookie,但這上Cookie可能存在很長(zhǎng)時(shí)間,而且僅憑這個(gè)Cookie就自動(dòng)登錄并不安全,因此,可以在服務(wù)端使用一個(gè)Session來(lái)管理用戶。也就是當(dāng)?shù)谝淮蔚卿洺晒,就?chuàng)建一個(gè)Session,并將用戶的某些信息保存在Session順。代碼如下:
HttpSession session =request.getSession();
session.setAttribute(user, user);
session.setMaxInactiveInterval(2 * 3600);  // Session保存兩小時(shí)
   
當(dāng)再次訪問(wèn)程序時(shí),確定了cookie存在后,就會(huì)繼續(xù)驗(yàn)證User Session的存在,代碼如下:
Cookie[] cookies=request.getCookies();
for(Cookie cookie: cookies)
{
    if(cookie.getName().equals(user))
    {
        if(session.getAttribute(user) != null)
        {
            // 直接forward到主界面
           break;
        }
        else
        {  
            // forward到登錄界面
         }
     }
}
    雖然上面的代碼可以很好地實(shí)現(xiàn)自動(dòng)登錄功能,但是當(dāng)瀏覽器關(guān)閉,再次啟動(dòng)后,由于Servlet用于保存Session ID的JSESSIONID Cookie是臨時(shí)的(也就是說(shuō)不是持久Cookie,當(dāng)瀏覽器關(guān)閉后,這個(gè)Cookie就會(huì)被刪除),因此,需要將JSESSIONID進(jìn)行持久化。代碼如下:
HttpSession session = request.getSession();
session.setAttribute(user, user);
session.setMaxInactiveInterval(2 * 3600);  // Session保存兩小時(shí)
Cookie cookie = new Cookie("JSESSIONID", session.getId());
cookie.setMaxAge(2 * 3600);  // 客戶端的JSESSIONID也保存兩小時(shí)
session.setMaxInactiveInterval(interval)
cookie.setPath("/");        
response.addCookie(cookie);
如果使用上面的代碼,即使瀏覽器關(guān)閉,在兩小時(shí)之內(nèi),Web程序仍然可以自動(dòng)登錄。
如果我們自已加一個(gè)JSESSIONID Cookie,在第一次訪問(wèn)Web程序時(shí),HTTP響應(yīng)頭有兩個(gè)JSESSIONID,但由于這兩個(gè)JSESSIONID的值完全一樣,因此,并沒(méi)有任何影響。如果在響應(yīng)頭的Set-Cookie字段中有多個(gè)相同的Cookie,則按著path和name進(jìn)行比較,如果這兩個(gè)值相同,則認(rèn)為是同一個(gè)Cookie,最后一個(gè)出現(xiàn)的Cookie將覆蓋前面相同的Cookie,如下面的兩個(gè)Cookie,最后一個(gè)將覆蓋前一個(gè):
Set-Cookie:
JSESSIONID=DDB2274CAC6739E1D6747B0043D5D90E; Path=/web
Set-Cookie: JSESSIONID=mysession;
Expires=Thu, 05-Jun-2008 05:02:50 GMT; Path=/web
    由于下面兩個(gè)Cookie的path不同,因此,它們是完全不同的兩個(gè)Cookie:
Set-Cookie:
JSESSIONID=DDB2274CAC6739E1D6747B0043D5D90E; Path=/web1
Set-Cookie: JSESSIONID=mysession;
Expires=Thu, 05-Jun-2008 05:02:50 GMT; Path=/web2
誰(shuí)有其他的方法實(shí)現(xiàn)自動(dòng)登錄,請(qǐng)跟貼!
               
               
               

本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u/15200/showart_1668286.html
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP