rhanziy

Spring - Spring Interceptor ์‹ค์Šต ๋ณธ๋ฌธ

Java

Spring - Spring Interceptor ์‹ค์Šต

rhanziy 2023. 4. 21. 16:42
๐Ÿšฉ ๋ชฉํ‘œ 

ํšŒ์›๊ฐ€์ž… ์‹œ DB์— ์ €์žฅ๋œ adminCk ๊ฐ’์ด 1์ด๋ฉด ๊ด€๋ฆฌ์ž, 0์ด๋ฉด ์‚ฌ์šฉ์ž๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ
๊ด€๋ฆฌ์ž ๊ณ„์ •์ด๋ฉด ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€(/admin/main)์— ์ ‘์†์ด ๊ฐ€๋Šฅํ•˜๊ณ , ์‚ฌ์šฉ์ž ๊ณ„์ •์ด๊ฑฐ๋‚˜ ๋กœ๊ทธ์ธ ์ƒํƒœ๊ฐ€ ์•„๋‹ˆ๋ฉด ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€(/admin/main)์— ์ ‘์†ํ•˜์ง€ ๋ชปํ•˜๋„๋ก Interceptor๋ฅผ ์ ์šฉํ•œ๋‹ค.

 

 

์‚ฌ์šฉํ•  ์ธํ„ฐ์…‰ํ„ฐ์˜ ์ ์šฉ ๋Œ€์ƒ์„ ์ •ํ™•ํžˆ ํƒ€๊ฒŸํŒ…ํ•˜๊ธฐ ์œ„ํ•ด

Controller์˜ RequestMapping ์–ด๋…ธํ…Œ์ด์…˜ ๋ถ€๋ถ„๊ณผ login.jsp์—์„œ ๋กœ๊ทธ์ธ ๊ด€๋ จ์ฒ˜๋ฆฌ url์„ .do๋กœ ๋ณ€๊ฒฝํ–ˆ๋‹ค.


Interceptor ๊ธฐ๋ณธ ์„ค์ •

1. spring-web๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ pom.xml์— ์ถ”๊ฐ€ํ•œ๋‹ค.

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${org.springframework-version}</version>
</dependency>

 

2. interceptor ํŒจํ‚ค์ง€ ์ƒ์„ฑ ํ›„ AdminInterceptor, LoginInterceptor class ์ƒ์„ฑ


servlet-context.xml ์„ค์ •

servlet-context.xml root-context.xml
controller ํด๋ž˜์Šค๋ฅผ ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•œ๋‹ค. ํ”„๋กœ์ ํŠธ ๋‚ด๋ถ€์— ์ •์˜ํ•œ ํด๋ž˜์Šค๋ฅผ ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•œ๋‹ค.
๋“ฑ๋ก๋œ ์Šคํ”„๋ง ๋นˆ์˜ ์†์„ฑ์„ ์ถ”๊ฐ€ํ•œ๋‹ค. pom.xml๋กœ ์™ธ๋ถ€ ์ฃผ์ž…๋œ ์Šคํ”„๋ง ๋นˆ์˜ ์†์„ฑ ์ถ”๊ฐ€, ์˜์กด์„ฑ ์ฒ˜๋ฆฌ
root-context.xml์—์„œ ๋“ฑ๋ก๋œ ์Šคํ”„๋ง ๋นˆ๊ณผ ์—ฐ๋™ํ•œ๋‹ค.  

ํ”„๋กœ์ ํŠธ ๊ตฌ๋™ ์‹œ ์ ˆ์ฐจ : web.xml ๐Ÿ‘‰ root-context.xml ๐Ÿ‘‰ servlet-context.xml

 

 

 

์ธํ„ฐ์…‰ํ„ฐ๋ฅผ ์ ์šฉํ•  ๋Œ€์ƒ์€ ๋กœ๊ทธ์ธ์„ ์ˆ˜ํ–‰ํ•˜๋Š” "login.do"์™€ "/admin" ๊ฒฝ๋กœ๊ฐ€ ๋ถ™๋Š” ๋ชจ๋“  url์ด๋‹ค.

ํ•ด๋‹น url์— ์ ์šฉ ๋˜๋„๋ก ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. ๋˜, interceptorํด๋ž˜์Šค๊ฐ€ spring์—์„œ ์ธ์‹ํ•  ์ˆ˜ ์žˆ๋„๋ก bean์ฝ”๋“œ๋„ ์ถ”๊ฐ€ํ•œ๋‹ค.

 <interceptors>
    <interceptor>
        <mapping path="/member/login.do"></mapping>
        <beans:bean id="loginIntreceptor" class="com.vam.interceptor.LoginInterceptor"></beans:bean>
    </interceptor>
    <interceptor>
        <mapping path="/admin/**"></mapping>
        <beans:bean id="AdminIntreceptor" class="com.vam.interceptor.AdminInterceptor"></beans:bean>
    </interceptor>
</interceptors>

LoginInterceptor.java - login.do ์ ‘์† ์‹œ

package com.vam.interceptor;

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

import org.springframework.web.servlet.HandlerInterceptor;

public class LoginInterceptor implements HandlerInterceptor {
	
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		
		HttpSession session = request.getSession();	 
		
		session.invalidate(); 	// loginํŽ˜์ด์ง€์—์„œ ๋กœ๊ทธ์ธ ์ •๋ณด ์„ธ์…˜ ์‚ญ์ œ
		
		return true;
	}
	
}

 

AdminInterceptor.java - /admin/** url ์ ‘์† ์‹œ

package com.vam.interceptor;

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

import org.springframework.web.servlet.HandlerInterceptor;

import com.vam.model.MemberVO;

public class AdminInterceptor implements HandlerInterceptor {
	
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		
		HttpSession session = request.getSession();
		
		MemberVO lvo = (MemberVO)session.getAttribute("member");
		
		System.out.println(lvo.getAdminCk());
		
		if(lvo == null || lvo.getAdminCk() == 0) {	// ๊ด€๋ฆฌ์ž ๊ณ„์ •์ด ์•„๋‹Œ ๊ฒฝ์šฐ
			
			response.sendRedirect("/main");	// ๋ฉ”์ธํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ
			return false;
			
		}
		
		return true;
	}
	
	
}
Comments