프롬프트 AI&OpenAPI&공공데이터를 활용한 웹앱개발자 양성 과정 34일차

서명원·2024년 1월 25일
post-thumbnail

임시글 정리하다 학원에서 정리한 내용 날려버렸다.
그렇기에 간단히 과제 구현 위주로 기록 남긴다.

1. 세션

세션을 이용한 로그인 구현 방식을 사용했는데,
이 참에 세션과 쿠키에 대한 내용을 따로 정리해서 벨로그했다.
아래 링크 참조 바람
세션과 쿠키에 대해서

2. 과제. 게시판에 [작성자] 개념 추가하기 와 로그인, 로그아웃

  1. 어디에서 로그인을 제어해주지?
    전에 순수 java로 로그인 구현 기능했을때 프론트 컨트롤러에 해당하는 부분에서 로그인이 필요한 url과 로그아웃이 필요한 url을 분리해 유저를 튕겨내는 기능이 있었다.
    이게 JSP와 Servlet으로 넘어가면 필터에 해당하는데, 전부터 한번 필터를 통해 로그인 구현을 해보고싶었기에 해당 방식으로 구현해봤다.

  2. 로그인 후 요청을 보낸 쪽으로 다시 돌려주고 싶어.
    벌써 5년은 지난 수업이라 가물가물하지만, 일본 취직 준비를 위한 수업을 들을 때 선생님이 이전 페이지 주소를 받아와서 리다이렉트로 넘겨주는 처리를 본 기억이있다.
    filter를 이용한 로그인 처리같은 경우, 인터셉터로 요청을 가로채서 로그인이 필요하면 로그인 폼으로 이동시키는 처리를 하다보니, 로그인 완료 후에 이전 사이트에 대한 정보를 어떻게 건내야할지 고민했다.
    결과 request.setAttribute를 이용하여 이전 사이트의 URL과 쿼리스트링을 저장하여 로그인 jsp로 건내줬고, jsp에서 받아서 그걸 다시 form을 통해 로그인 실행 서블릿으로 건내 준후, 로그인 완료되면 건내받은 URL로 이동하도록 처리했다.

  1. 어라? 건내받은 URL로 이동이 안되.
    그동안 수업에서는 DB요청 중복을 막기위해 replace로 기능으로 화면 이동을 하였다.
    그런데 로그인 실행 후 replace로 이동하려하자 이동이 안되었다.
    검색해보니 href란게 있길래 이걸 사용해서 이동하였기에 이동이 되었다.
    ChatGPT와의 대화를 통해 문제 원인을 확인해보았다.

    즉 내가 2에서 요청받은 주소값을 인자로 건내주기 위해 LoginForm으로 그대로 forward처리를 했기 때문에, LoginForm의 URL은 요청받은 주소로 되어있었다.
    그 상태로 건내받은 주소로 페이지 주소를 갱신해도, 페이지 주소 자체가 달라지지는 않는다. (요청받은 페이지의 주소가 그대로 남아있기 때문)
    그래서 href를 통해 새로고침 처리까지 이루어질 필요가 있었던 것이다.
profile
백엔드 취업을 꿈꾸는 일본어 전공자

0개의 댓글