Filter의 사용자 로그인 유효성 검사에 대한 사순환 해결

2441 단어 j2ee
백그라운드 관리 폴더 아래의 모든 관리 페이지를 필터하여 로그인하지 않은 사용자가 이 페이지에 접근하는 것을 막아야 한다. 작업 중에 사순환으로 방향을 바꾸었다. 고민 끝에 해결 방법을 찾았고 이제 코드를 붙여야 한다.
필터 클래스
package dsh.bikegis.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class LoginCheckFilter implements Filter {

	public void init(FilterConfig filterConfig) throws ServletException {
	}

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		HttpServletRequest req = (HttpServletRequest) request;
		HttpServletResponse res = (HttpServletResponse) response;
		HttpSession session = req.getSession(true);

		//  session        
		String username = (String) session.getAttribute("userName");
		String   uri   =   ((HttpServletRequest)   request).getRequestURI(); 
		//             ,        
		if (username != null || !("".equals(username))|| uri.endsWith("index.html") ) {
			
			chain.doFilter(request, response);
		} else {
			//        
			RequestDispatcher dispatcher = request.getRequestDispatcher("index.html");  
			dispatcher.forward(request, response);  
			
		}
	}

	public void destroy() {
	}
}
 web.xml 구성 필터:
          yes  
          dsh.bikegis.filter.LoginCheckFilter  
        
   
        
          yes  
          /manage/*  
        

//로그인 확인
	public String loginUser(){
		if(this.us.getUser(user)!=null){
			 ActionContext.getContext().getSession().put("userName",user.getUsername());  
			return ActionSupport.SUCCESS;
		}
		this.errMesg="         ,     !";
		return ActionSupport.ERROR;
	}

 
그 중에서 로그인 검증은struts2의 Action이고 프론트 데스크톱 로그인 페이지에서 이 Action을 방문하여 성공하면session에 사용자 이름을 넣습니다.Filter에서session에 저장된 문자열을 얻습니다. 비어 있거나 로그인 페이지 (여기는 index.html) 가 아니면 검증에 성공하면 관리자 디렉터리에 접근하는 모든 파일을 열 수 있습니다.그렇지 않으면 index로 이동합니다.html
 
 
 

좋은 웹페이지 즐겨찾기