[JAVA] spring login check

[JAVA] spring login check

안녕하세요 코딩남 츄앤쥬 입니다.

스프링의 로그인 체크를 구현하였습니다.

로그인 체크는 인터셉트라는 기능을 이용하여, 컨트롤러가 호출되기 전에 서버의 쿠키 혹은 세션을 체크하여,

리다렉트를 진행 해줍니다.

각각의 기능에 맞게 인터셉트를 config에 늘려나가면 될것 같습니다.

먼저 config 패키지에 아래 2개의 파일을 생성 합니다.

아래는 각각의 소스 코드입니다.

관리자는 홈 디렉토리에서부터 로그인 체크를 진행 해야 하므로, 로그인 관련 액션만 제외하고

모두 체크 하도록 notLoadList를 설정합니다.

package com.jgdh.region.news.admin.web.config; import java.io.IOException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; @Component public class LoginInterceptor implements HandlerInterceptor { private static final Logger logger = LoggerFactory.getLogger(LoginInterceptor.class); // 요청을 컨트롤러에 보내기 전 작업 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { logger.info("LoginInterceptor - {}", "호출완료"); HttpSession session = request.getSession(); String memberId = (String)session.getAttribute("memberId"); if(memberId != null) { return true; } else { try { response.sendRedirect("/Account/Login"); } catch (IOException e) { e.printStackTrace(); } return false; } } }

package com.jgdh.region.news.admin.web.config; import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration //스프링부트 웹 설정 public class InterceptorConfig implements WebMvcConfigurer { @Autowired @Qualifier(value = "loginInterceptor") private HandlerInterceptor loginInterceptor; //@Value("${resources.notload.list}") // application.properties에 설정된 값을 가지고 오기 // private List notLoadList; @Override //인터셉터 등록 public void addInterceptors(InterceptorRegistry registry) { List notLoadList = new ArrayList(); notLoadList.add("/Account/Login"); notLoadList.add("/Account/Logout"); //notLoadList.add("/"); //유저 사이트는 이거 넣어줘야 한다.. 메인은 가야함 관리자는 로그인 페이지를 가야함 registry.addInterceptor(loginInterceptor).addPathPatterns("/**").excludePathPatterns(notLoadList); } }

디버깅시 로그인 페이지로 랜딩하긴 하는데, 로그인폼의 css 호출이 제대로 되지 않네요..

어떤 문제일까? 절대경로가 틀린거 같은데... 테스트좀 해봐야겠네요.

단어장에 추가 다음에 대한 단어 목록이 없습니다영어 -> 한국어... 새로운 단어 목록 생성...

복사

from http://chunjyu.tistory.com/37 by ccl(A) rewrite - 2020-03-20 18:54:26

댓글

이 블로그의 인기 게시물

2020 LCK 롤챔스 Spring 경기 재개 및 일정

데이터 바인딩 추상화 - propertyEditor

Spring Web Form