1. 程式人生 > >用AJAX實現“防止未登陸人員訪問指定頁面”的功能

用AJAX實現“防止未登陸人員訪問指定頁面”的功能

dir ive 重定向 oca 憑據 cookies resp 跳轉 nload

為了保護科協官網不被未登錄的同學訪問,用ajax進行判斷和跳轉

小知識:用ajax訪問的servlet的任何跳轉都是無效的,所以跳轉只能在js代碼中進行

以下是servlet代碼

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        
// 若膽敢用首頁url想直接進入首頁,則進入get方法,然後重定向回登陸頁面 Cookie[] cookies = request.getCookies(); if (cookies != null) { for (Cookie cookie : cookies) { if ("KXlogin_username".equals(cookie.getName())) {//找到登陸過的證據(cookie) //request.getRequestDispatcher("/kxpro_homePage/index.html").forward(request,response);
// 轉發請求至首頁(隱藏首頁url) //response.sendRedirect("/KXpro/kxpro_homePage/index.html"); out.print("AnUser");break; } else { } } }else{ out.print("NoCookie"); //response.sendRedirect("/KXpro/kxpro_login/index.html");
// 重定向回登陸頁面 } }

說明:從瀏覽器拿到cookie進行判斷是否登錄,有登陸就有cookie,沒登陸就沒有cookie,當看見這個cookie時馬上out一串"AnUser",然後break出循環結束訪問服務器,那麽服務器就返回"AnUser"。

沒有登陸過的有兩種情況一種是瀏覽器有cookie但沒有登錄信息的cookie,另一種情況是根本就沒有cookie,這兩種情況前者返回空串,後者返回"NoCookie"串,然後以此為憑據在js中判斷。

==================================================================================================================================

下面是js代碼

<body onload="homePageLoad()">



    function createXMLHttpRequest() {
        var xmlHttp;
        // 適用於大多數瀏覽器,以及IE7和IE更高版本
        try {
            xmlHttp = new XMLHttpRequest();
        } catch (e) {
            // 適用於IE6
            try {
                xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                // 適用於IE5.5,以及IE更早版本
                try {
                    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {
                }
            }
        }
        return xmlHttp;
    }

    function homePageLoad() {
        var xmlHttp = createXMLHttpRequest();
        xmlHttp.open("GET", "/KXpro/servlet/LoginServlet", true);
        xmlHttp.send(null);
        xmlHttp.onreadystatechange = function() {
            if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
                //到這裏就表示通訊成功,可以任意拿到text或者xml
                //使用var txt=xmlHttp.responseText;  獲得text,text可以使json串
                //使用var xmls=xmlHttp.responseXML; 獲得xml,不過解析起來比較麻煩
                var txt = xmlHttp.responseText;
                if (txt == "AnUser")//判斷是否有登陸過的cookie
                {
                    //有登陸過,什麽也不做
                } else {
                    window.location.href = "/KXpro/kxpro_login/index.html";//跳轉到首頁
                }
            }
        }
    }

整個ajax大框架在 http://www.cnblogs.com/sovagxa/articles/7241671.html 說的很清楚,就不再贅述了

拿到text串之後直接判斷是否要跳轉就行 跳轉代碼:

window.location.href = "/KXpro/kxpro_login/index.html";//跳轉

用AJAX實現“防止未登陸人員訪問指定頁面”的功能