<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 60,comments - 71,trackbacks - 0

    有很多Web程序中第一次登錄后,在一定時間內(nèi)(如2個小時)再次訪問同一個Web程序時就無需再次登錄,而是直接進(jìn)入程序的主界面(僅限于本機)。實現(xiàn)這個功能關(guān)鍵就是服務(wù)端要識別客戶的身份。而用Cookie是最簡單的身從驗證。

    如果用戶第一次登錄,可以將用戶名作為Cookie寫到本地,代碼如下:


    Cookie cookie = new Cookie("user", user);
    cookie.setMaxAge(
    365 * 24 * 3600);
    cookie.setPath(
    "/");
    response.addCookie(cookie);

        當(dāng)用戶再次訪問程序時,服務(wù)端程序應(yīng)該檢測這個Cookie是否存在,代碼如下:

    Cookie[] cookies=request.getCookies();
    for(Cookie cookie: cookies)
    {
        if(cookie.getName().equals(user))
        {
           
    // 如果user Cookie存在,進(jìn)行處理
            break;
        }
    }

        盡管從客戶端可以獲得User Cookie,但這上Cookie可能存在很長時間,而且僅憑這個Cookie就自動登錄并不安全,因此,可以在服務(wù)端使用一個Session來管理用戶。也就是當(dāng)?shù)谝淮蔚卿洺晒螅蛣?chuàng)建一個Session,并將用戶的某些信息保存在Session順。代碼如下:

    HttpSession session =request.getSession();
    session.setAttribute(user, user);
    session.setMaxInactiveInterval(
    2 * 3600);  // Session保存兩小時

        
    當(dāng)再次訪問程序時,確定了cookie存在后,就會繼續(xù)驗證User Session的存在,代碼如下:

    Cookie[] cookies=request.getCookies();
    for(Cookie cookie: cookies)
    {
        if(cookie.getName().equals(user))
        {
           
    if(session.getAttribute(user) != null)
            {
               
    // 直接forward到主界面
               break;
            }
            else
            { 
               
    // forward到登錄界面
             }
         }
    }

        雖然上面的代碼可以很好地實現(xiàn)自動登錄功能,但是當(dāng)瀏覽器關(guān)閉,再次啟動后,由于Servlet用于保存Session IDJSESSIONID Cookie是臨時的(也就是說不是持久Cookie,當(dāng)瀏覽器關(guān)閉后,這個Cookie就會被刪除),因此,需要將JSESSIONID進(jìn)行持久化。代碼如下:

    HttpSession session = request.getSession();
    session.setAttribute(user, user);
    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);

    如果使用上面的代碼,即使瀏覽器關(guān)閉,在兩小時之內(nèi),Web程序仍然可以自動登錄。

    如果我們自已加一個JSESSIONID Cookie,在第一次訪問Web程序時,HTTP響應(yīng)頭有兩個JSESSIONID,但由于這兩個JSESSIONID的值完全一樣,因此,并沒有任何影響。如果在響應(yīng)頭的Set-Cookie字段中有多個相同的Cookie,則按著pathname進(jìn)行比較,如果這兩個值相同,則認(rèn)為是同一個Cookie,最后一個出現(xiàn)的Cookie將覆蓋前面相同的Cookie,如下面的兩個Cookie,最后一個將覆蓋前一個:

    Set-Cookie: JSESSIONID=DDB2274CAC6739E1D6747B0043D5D90E; Path=/web

    Set-Cookie: JSESSIONID=mysession; Expires=Thu, 05-Jun-2008 05:02:50 GMT; Path=/web

        由于下面兩個Cookiepath不同,因此,它們是完全不同的兩個Cookie

    Set-Cookie: JSESSIONID=DDB2274CAC6739E1D6747B0043D5D90E; Path=/web1

    Set-Cookie: JSESSIONID=mysession; Expires=Thu, 05-Jun-2008 05:02:50 GMT; Path=/web2


    誰有其他的方法實現(xiàn)自動登錄,請跟貼!
    posted on 2008-06-10 16:54 henry1451 閱讀(350) 評論(0)  編輯  收藏 所屬分類: Java技術(shù)
    主站蜘蛛池模板: 亚洲人成黄网在线观看| 九一在线完整视频免费观看| 在线看片人成视频免费无遮挡| 免费播放美女一级毛片| 久久久久国产成人精品亚洲午夜 | 免费一级毛片在线播放视频| 亚洲精品国产第1页| 国产片免费在线观看| 野花香在线视频免费观看大全 | 中文字幕乱码亚洲无线三区| 久久久久亚洲精品男人的天堂 | 波多野结衣免费视频观看| 久久免费线看线看| 亚洲色成人网站WWW永久四虎| 亚洲综合无码AV一区二区| 在人线av无码免费高潮喷水| 美女啪啪网站又黄又免费| 91亚洲精品第一综合不卡播放| 国产午夜鲁丝片AV无码免费| 特级无码毛片免费视频尤物| 狠狠热精品免费观看| 亚洲精品日韩专区silk| 亚洲国产精品无码久久久久久曰 | 添bbb免费观看高清视频| 精品亚洲麻豆1区2区3区| 亚洲男人av香蕉爽爽爽爽| 美女裸身网站免费看免费网站| 在线免费视频你懂的| 亚洲精品无码你懂的| 99久久亚洲综合精品成人网| 亚洲中文字幕无码一区二区三区 | 成人国产mv免费视频| 99精品视频在线观看免费专区 | WWW免费视频在线观看播放| 亚洲av日韩综合一区二区三区| 日韩亚洲Av人人夜夜澡人人爽| 亚洲免费日韩无码系列| 日韩免费一级毛片| 国产精品视频免费| 国产午夜免费高清久久影院| 国产乱妇高清无乱码免费|