Filter 驗證當前訪問用戶是否登錄


    當用戶訪問網站頁面時,系統會檢測用戶是否是合法登錄用戶,沒登錄的用戶會被轉跳到登錄頁面或者返回登錄提示信息,反之用戶可以正常訪問

具體思路如下:

    利用filter 過濾所有用戶的請求,用戶的請求url爲登錄或註冊頁面則視爲正常訪問,當用戶登錄時爲當前用戶創建session,將用戶名保存在session裏面,當用戶訪問路徑爲網站頁面時檢查當前用戶session 是否存在,如果session爲空,則說明用戶沒有登錄,將當前網頁重定向到登錄頁面

 

filter如果不設置過濾文件格式

(即設置pattern<url-pattern>/*</url-pattern>),所有的請求(包括js文件,css文件,網站上的圖片等)都將先進入到filter 

 

public void doFilter(ServletRequest req, ServletResponse res,
			FilterChain chain) throws IOException, ServletException {	
		HttpServletResponse response = (HttpServletResponse) res; 
		HttpServletRequest request = (HttpServletRequest) req;	
		String url = request.getRequestURI();	
		HttpSession session = request.getSession(true);
		Object obj = session.getAttribute("userName");
		//用戶的請求url爲登錄或註冊頁面則視爲正常訪問
		if(url.endsWith("LoginAction.do") || url.endsWith("login.html") || url.endsWith("js") || url.endsWith("css")|| url.endsWith("gif")|| url.endsWith("jpg")){
			chain.doFilter(request, response);
			return;
		}
		//如果session爲空,則說明用戶沒有登錄,將當前網頁重定向到登錄頁面
		if(null == obj || ((String) obj).length() ==0){
			System.out.println(url);
			//request.getRequestDispatcher("login.html").forward(request, response);
			response.sendRedirect("../login.html");
			System.out.println("1");
			chain.doFilter(request, response);
			return;	
		}else{
			System.out.println("session is not null");
			chain.doFilter(request, response);	
			return;
			
		}
	}

 666導航網  可以自由收藏管理個人常用網址的便捷上網工具   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章