Spring+MyBatis 실습 - 로그인 및 권한 제어

자세히 보기
1. 사용자 로그인 기능을 실현한다.
세션을 통해 사용자 로그인 기능을 실현합니다.사용자가 로그인할 때 HttpSession 대상에 사용자의 정보를 저장합니다. 그 중에서 HttpSession 대상은 HttpServletRequest의 getSession 방법으로 얻을 수 있습니다.또한 HttpSession 대상은 Jsp 내장 대상session에 대응하고 jsp 페이지에서session을 통해 접근할 수 있다. 예를 들어 jstl 탭 라이브러리를 통해session의 내용에 접근할 수 있다.

	

session의username이null인지 판단하여 탭p를 표시할지 여부를 결정합니다.
 
로그인 기능 구현 코드;
	@RequestMapping(value="/login", method=RequestMethod.POST)
	public String login(HttpServletRequest request, User user){

		if(userService.validateUser(user)){ // 、 
			request.getSession().setAttribute(CrazySnailConstants.USER, user.getEmail()); // , session 
			return "index";
		}
		
		request.getSession().setAttribute("errormsg", " 、 , ");
		return "login";  // , 
	}

   
주:session 데이터는 서버에 놓여 있기 때문에 Tomcat을 다시 시작할 때마다session 데이터는 비워지고 다시 로그인해야 합니다.
 
2. Filter를 통해 사용자 권한 제어를 실현한다.
웹을 통해서.xml에서 Filter를 설정하여 특정한 사용자의 요청을 필터하고 현재session에 사용자가 로그인한 관련 데이터가 있는지 판단하며 관련 데이터가 존재하면 접근을 허용합니다.그렇지 않으면 사용자에게 로그인을 알립니다.
 
또한tomcat 기본 설정에서session의 기본 유효기간은 30분이며, 아파치-tomcat-7.0.53\conf\web을 볼 수 있습니다.xml에서 보기를 진행합니다.웹을 통해서도 가능합니다.xml에서 세션의 유효기간을 설정합니다.
	
		30 
	

tomcat의 세션 시간 초과는 여러 단계에서 설정할 수 있습니다:tomcat 실례 단계, 웹 응용 프로그램 단계, servlet 단계, 실행할 때Context 코드 단계.낮은 레벨의 설정은 높은 레벨의 설정을 덮어씁니다.일반적으로 자주 사용하는 것은 앞의 두 단계에서 설정하는데 각각/conf/web에 있다.xml 및/webapps/yourapp/WEB-INF/web.xml.
 
권한 제어 구현:
우선, 필터류의 실현;
package com.crazysnail.filter;

public class AuthenFilter implements Filter{
	private static Logger logger = Logger.getLogger(AuthenFilter.class);
	@Override
	public void destroy() {
		
	}
	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		HttpServletRequest httpServletRequest = (HttpServletRequest) request;
		
		if(httpServletRequest.getSession().getAttribute(CrazySnailConstants.USER)!=null){ // session 
			chain.doFilter(request, response);
		}else{
			httpServletRequest.getRequestDispatcher("./loginfail").forward(request, response);   // , 
		}
	}
	@Override
	public void init(FilterConfig arg0) throws ServletException {
	}
}

필터 종류를 사용자 정의할 때 필터 인터페이스를 실현해야 합니다. 필터 메커니즘은doFilter 방법에서 이루어집니다.
 
그 다음으로 웹에서.xml에 필터 설정 추가하기;
	
	
		authenFilter
		com.crazysnail.filter.AuthenFilter
	
	
		authenFilter
		/user/*
	

이 필터는 URL 경로에/user/가 포함된 경로를 필터하여 권한 검증을 하여 간단한 권한 제어 기능을 실현한다.

좋은 웹페이지 즐겨찾기