본문으로 바로가기

SameSiteCookieFilter 설정하기 Springboot 1.4.2

category JAVA 2024. 4. 1. 16:24
반응형

 

 - Main 에서 따로 실행되는 컨트롤러가 있는 경우 

 

 

- SameSiteCookieFilter Class 만들기

@Component
public class SameSiteCookieFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
		// 필요한 초기화 작업 수행
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest httpRequest = (HttpServletRequest) request;
        HttpServletResponse httpResponse = (HttpServletResponse) response;

        if (httpRequest.getSession(false) != null) {
            Cookie[] cookies = httpRequest.getCookies();
            if (cookies != null) {
                for (Cookie cookie : cookies) {
                    String name = cookie.getName();
                    String value = cookie.getValue();

                    // SameSite=Lax 속성을 포함한 Set-Cookie 헤더 생성
                    String setCookieHeader = String.format("%s=%s; SameSite=Lax", name, value);

                    // 응답 헤더에 Set-Cookie 헤더 추가
                    httpResponse.addHeader("Set-Cookie", setCookieHeader);
                }
            }
        }
        chain.doFilter(request, response);
     }

    @Override
    public void destroy() {
		
    }
}

 

 

- Main Controller

@Controller
public Class MainController {
 	private final SameSiteCookieFilter sameSiteCookieFilter;
    
    @Autowired    //의존성 주입
    public MainController(SameSiteCookieFilter sameSiteCookieFilter) {
        this.sameSiteCookieFilter = sameSiteCookieFilter;
    }

	...
    
    
    ...
}

 

 

  • 브라우저> 개발자모드 > Application > Cookies 에서 SameSite Lax 설정 확인

반응형