Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- json
- POI
- input
- javascript
- Ajax
- 오류
- select
- eGovFramework
- 태그
- 과정평가형
- JVM
- web.xml
- Oracle
- Java
- sql
- was
- 정의
- jsp
- spring
- 개념
- jQuery
- mybatis
- eGov
- array
- controller
- TO_DATE
- html
- CSS
- 함수
- 암호화
Archives
- Today
- Total
web developer
[egov] dispacther-servlet.xml / 로그인 체크 Interceptors 설정 본문
Framework/Egovframework [spring]
[egov] dispacther-servlet.xml / 로그인 체크 Interceptors 설정
trueman 2024. 5. 28. 14:34728x90
728x90
1. web.xml 설정
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/egovframework/springmvc/dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
2. dispacther-servlet.xml 설정
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**/*.do"/> <!-- 절대경로(/)부터 시작하면 중간경로가 있을 수 있기에 (**)으로 표시 -->
<mvc:exclude-mapping path="/cmn/login/*.do"/> <!-- 예외 경로 지정 -->
<mvc:exclude-mapping path="/mon/page/loginView.do"/> <!-- 예외 경로 지정 -->
<bean class="egovframework.cmn.cmn.AuthenticInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
3. AuthenticInterceptor.xml 설정 // 세션인증방식
package com.example;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class AuthenticInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
/*
여기서 로그인 체크 로직을 구현합니다.
예를 들어, 세션을 확인하여 로그인 상태를 확인하고, 로그인되지 않은 경우에는 로그인 페이지로 리다이렉트합니다.
이 메서드가 true를 반환하면 핸들러 실행을 계속하고, false를 반환하면 핸들러 실행을 중단합니다.
*/
String requestURI = request.getRequestURI();
HttpSession session = request.getSession();
LoginVO loginVO = (LoginVO) session.getAttribute("userinfo");
if(loginVO != null) {
session.setMaxInactiveInterval(60 * 60);
return true;
}else {
String returnUrl = "";
String loginUrl = "/portal/login.do";
if(requestURI.equals("/menu/board/insert.do") {
returnUrl = "redirect:" + loginUrl + "DV=board";
}else {
returnUrl = "redirect:" + loginUrl + "";
}
/*
ajax 요청인 경우 403 에러 발생하고,
아니면 "XMLHttpRequest"와 같은 AJAX 요청이 아닌 경우에는 특정 뷰를 보여주기 위해
ModelAndView 객체를 생성하고 ModelAndViewDefiningException을 던져서
해당 뷰를 렌더링하도록 합니다.
*/
if ("XMLHttpRequest".equals(request.getHeader("x-request-with"))) {
response.sendError(HttpServletResponse.SC_FORBIDDEN);
return false;
}else {
// returnUrl은 뷰의 이름이나 리다이렉트 URL을 정확하게 지정해야 합니다.
ModelAndView modelAndView = new ModelAndView(returnUrl);
throw new ModelAndViewDefiningException(modelAndView);
}
}
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// 핸들러 실행 후에 수행할 작업이 있다면 여기에 구현합니다.
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
Exception ex) throws Exception {
// 요청 처리 완료 후에 수행할 작업이 있다면 여기에 구현합니다.
}
}
728x90
728x90
'Framework > Egovframework [spring]' 카테고리의 다른 글
[egov] 트랜잭션 서비스 (2) | 2024.09.12 |
---|---|
[egov] egovFramework 페이지네이션 기능 (5) | 2024.08.13 |
[eclipse] IOConsole Updater (error) 원인 및 해결방안 (2) | 2022.04.20 |
[eclipse] Updating javascript index (error) 원인 및 해결방안 (2) | 2022.04.20 |
[egov] Cannot change version of project facet Dynamic Web Module to 2.5 (0) | 2022.03.19 |