고래씌
[Spring] 11-3. 로그인 여부 체크하는 인터셉터 본문
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
=> 추가를 하면 예를 들어 사진게시판에서 사용자가 로그아웃을 했을 때, 권한이 제거되면서 로그인페이지로 이동하게 된다!
'Server > Spring' 카테고리의 다른 글
[Spring] 12-2. DB에는 존재하지 않는 파일인데 images 안에만 존재하는 파일 삭제하는 스케쥴러 (0) | 2024.01.31 |
---|---|
[Spring] 12-1. 스케쥴러, Quartz를 이용한 회원 비밀번호 변경 알람(ex. 변경한지 3개월 지난경우 알람) (0) | 2024.01.31 |
[Spring] 11-2. 인터셉터 이용해서 로깅 처리 (0) | 2024.01.30 |
[Spring] 11-1. 로그 처리 (0) | 2024.01.30 |
[Spring] 10-5. 채팅방 나가기 (0) | 2024.01.30 |