jsp驗證用戶是否登陸


  我發現我可以繞過登陸這一環節,直接在瀏覽器輸入要訪問的頁面就能就去,這是個大問題啊,如果有人知道我的目錄結構,可以暢通無阻啊,為此,得驗證用戶是否登錄,如果登陸,正常,否則跳轉到登陸頁面。我使用了兩種方法。

    法一:寫個文件驗證,在需要驗證的頁面將此文件引入(我寫的是testsession.jsp)

     <%
  
  if(session.getAttribute("user")==null)
  {%>
  <h1>未登錄!</h1>
        3秒后跳轉到登錄頁面
        <p>
        如果沒有跳轉,請點<a href="login.jsp">這里</a></p>
    <%
        response.setHeader("refresh","3;URL=login.jsp");
        return;
   }
   %>

比如說我的main.jsp頁面需要驗證,只需在此此頁面頂端添加語句<%@ include file="testsession.jsp"%>

法二:使用過濾器進行驗證

package p2;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class LoginCheckFilter implements Filter{
    public void init(FilterConfig filterConfig)throws ServletException{}
    public void destroy(){}
    public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)
        throws IOException,ServletException
    {
        HttpServletRequest req=(HttpServletRequest)request;
        HttpServletResponse res=(HttpServletResponse)response;
        request.setCharacterEncoding("gb2312");//設置字符編碼
        response.setCharacterEncoding("gb2312");
        res.setHeader("Pragma", "No-cache");//禁止緩存
        res.setHeader("Cache-Control","no-cache");
        res.setHeader("Expires", "0");
        PrintWriter out=res.getWriter();
        HttpSession session=req.getSession();
        if(session.getAttribute("user")!=null){
            chain.doFilter(request, response);
        }
        else{
               out.println("<script>alert('您沒有登錄登錄,請先登錄!');this.location.replace('../login.jsp','_parent'); </script>");
        
        }
    }

}

然后配置filter即可,但此時出現了問題,循環重定向,因為login.jsp頁面也是需要驗證的,而此時用戶沒有登錄,session肯定為null,又重定向到了login.jsp,由此出現了循環重定向。為此我將login.jspye頁面分離出來,新建文件夾aa,將需要驗證的頁面全部放到aa中,配置filter如下:

<filter>
    <filter-name>loginCheck</filter-name>
    <filter-class>p2.LoginCheckFilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>loginCheck</filter-name>
    <url-pattern>/aa/*</url-pattern>
    </filter-mapping>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM