고래씌

[Spring] 11-3. 로그인 여부 체크하는 인터셉터 본문

Server/Spring

[Spring] 11-3. 로그인 여부 체크하는 인터셉터

고래씌 2024. 1. 30. 17:04

1. 로그인 여부를 체크하는 인터셉터 

 
다음과 같이 로그인 여부를 체크하는 인터셉터 파일을 생성

 
▶ LoginInterceptor.java

package com.kh.spring.common.interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.web.servlet.HandlerInterceptor;

import com.kh.spring.member.model.vo.Member;


// 로그인 여부를 체크하는 인터셉터
// 로그인 하지 않은 사용자는 로그인 페이지로 리다이렉트
public class LoginInterceptor implements HandlerInterceptor{

	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		
		// 요청 url정보 → /spring/board/list/T → board/list/T
		String requestUrl = request.getRequestURI().substring(request.getContextPath().length());
		
		// 로그인한 사용자 정보 조회
		HttpSession session = request.getSession();
		Member loginUser = (Member) session.getAttribute("loginUser");
		
		if(loginUser != null) {
			return HandlerInterceptor.super.preHandle(request, response, handler);			
		}else {
			// 로그인하지 않은 경우
			
			session.setAttribute("alertMsg", "로그인 후 이용할 수 있습니다.");
			
			// 로그인 완료후 이동할 url을 session영역안에 저장
			// requestUrl
			
			String queryString = request.getQueryString();
			String nextUrl = requestUrl + "?" + queryString;

			
			// 로그인 요청 성공 후, 세션영역안에 저장된 nextUrl값을 활용해서 페이지 이동
			session.setAttribute("nextUrl", nextUrl); 
			
			response.sendRedirect(request.getContextPath()+"/");
			
			return false;
		}
		
	}
	
}

 
 
▶ servlet-context.xml
=> 아래 인터셉터 추가

 
 


2. 권한이 없는 사용자 로그인 페이지로 이동

 

▶ MemberController.java

 

=> 추가를 하면 예를 들어 사진게시판에서 사용자가 로그아웃을 했을 때, 권한이 제거되면서 로그인페이지로 이동하게 된다!