[JAVA] Cookie 활용하기

Kevin·2024년 3월 21일
1

JAVA

목록 보기
8/16
post-thumbnail

서론

지금까지 내가 개발을 하면서, 내 스스로 필요로 인해서 Cookie를 사용했던 적은 없는 것 같다.

사용하기 어려운 기술이거나 리소스가 많이 투자되는 기술은 아니었지만, 단순히 내가 사용해야 할 적합한 프로젝트나 코드를 발견하지 못했었다.

그래서 언젠가는 쿠키를 한번 사용해서 개발해봐야지라고 생각만 했었다.

그러다가 쿠키를 사용하면 괜찮겠는데??? 라는 생각이 든 코드가 있어서, Cookie를 적용해보고 후에 아쉬웠던 점까지 이야기 해보려고 한다.


내가 Cooike를 사용하고자 했던 코드의 흐름은 아래와 같다.

  1. 해당 Controller 메서드로 유저가 처음 요청을 보낼시에는 “A” 로직을 타길 바랬다.
    1. 이 때 유저는 회원가입등의 인증을 거치지 않은 유저이다.
  2. 그 후 유저가 N번째로 해당 Controller 메서드로 요청을 보낼시에는 “B” 로직을 타길 바랬다.
public String exampleControllerMethod(@CookieValue(required = false) String flag, HttpServletRequest request, HttpServletResponse response) throws Exception {

	// N번째 Flow = 쿠키가 존재할 때
	if (flag != null) {
		 /*
			 B 로직
		 */ 
		}
	
		response.addCookie(makeFlagCookie());
		 /*
			 A 로직
		 */ 
	}
		
    private Cookie makeFlagCookie() {
    	Cookie cookie = new Cookie("flag", "true");
    	cookie.setDomain("localhost");
    	cookie.setPath("/");
    	cookie.setMaxAge(1*60*60*24*365);
    	cookie.setSecure(true);
    	return cookie;
    }

그래서 위와 같이 코드를 작성했다.

유저가 맨 처음 컨트롤러 메서드로 요청을 보낼시에는, “A” 로직을 거친 후에 쿠키를 응답에 담아서 보내준다.

그 후 유저가 해당 컨트롤러에 다시 요청을 보내게 된다면 유저가 해당 쿠키를 보유했는지의 분기를 거쳐 “B” 로직을 실행한다.

이로써 요구사항은 모두 수행하였고, 테스트한 결과 정상적으로 동작한다.


아쉬운 점

아쉬운 점으로는 JWT나 세션등을 이용한 인증, 인가가 아니기에 유저가 다른 브라우져에서 접근을 하면 다시 로직을 타게 된다는 점이 있다.

즉, 유저의 환경에 따라서 내가 의도했던 FLOW가 달라진 수 있다는 생각이 들었다.

모든 유저의 환경에 맞게 대비할 수는 없겠지만, 최대한 유저의 환경들을 고려한 개발을 하게 된다면 더 좋을 것 같다는 생각이 들었다.


느낀 점

쿠키나 세션. JWT등을 사용하는 것처럼 이렇게 내가 사용할 수 있는 기술들이 많아진다면. 내가 문제를 만나게 되었을 때 내가 다룰 수 있는 도구, 무기들이 많아지는 것과 같다.

각 상황과 문제에 맞는 무기를 골라서 싸울 수 있다면 내 능력은 배로 성장할 것이다.

profile
Hello, World! \n

0개의 댓글

관련 채용 정보