📌 현재 상황
👉🏻 로그인하지 않았음에도 localhost:8006/spring/myPage.me 접속 시 마이페이지가 뜸
📖 Controlelr 실행 전/후의 요청을 낚아채는 Interceptor
💻 LoginInterceptor 클래스 생성
👉🏻 interceptor의 패키지 구조 하나 더 생성 후 만들 것!
👉🏻 HttpSession을 통해 loginUser가 있을 때만 접속 가능하게 만들 수도 있음
👉🏻 스프링 방식 적용도 가능함!
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.handler.HandlerInterceptorAdapter;
public class LoginInterceptor extends HandlerInterceptorAdapter {
// 선처리용 preHandle 메소드 오버라이딩
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 로그인 유무 검사를 위한 Session 객체 얻어내기
HttpSession session = request.getSession();
// loginUser 키값이 있나 검사
if(session.getAttribute("loginUser") != null) {
// 현재 요청을 보낸 사람이 로그인되어 있는 상태라면
// => Controller가 실행
return true;
} else {
// 현재 요청을 보낸 사람이 로그인이 되어 있지 않은 상태라면
// => Controller 실행 막기
// alertMsg로 "로그인 한 회원만 이용 가능하다"는 알람 메시지 띄우기
session.setAttribute("alertMsg", "로그인 후 이용 가능한 서비스입니다.");
// 응답 뷰 지정(메인페이지로 url 재요청)
response.sendRedirect(request.getContextPath());
return false;
}
}
}
💻 Servlet-context.xml
<interceptors>
<interceptor>
<mapping path="/myPage.me" />
<mapping path="/enrollForm.bo" />
<mapping path="/update.me" />
<beans:bean class="com.kh.spring.common.interceptor.LoginInterceptor" id="loginInterceptor" />
</interceptor>
</interceptors>
📌 현재 상황
👉🏻 로그인하지 않았을 때 localhost:8006/spring/myPage.me 접속 시 로그인 후 이용 가능한 서비스라는 alert창이 뜸