안녕하세요.
|
개발팀 Re:teev입니다.

thumbnail
/static/94ea5dbd60dd10b2bce1af75da7db0f8/springboot.png
SpringBoot의 로그인 처리 쿠키와 세션(part.5 세션동작방식으로 로그인처리)

🎈 세션 동작 방식으로 로그인 처리하기! 지난 시간에는 쿠키로 처리할때 나타나는 치명적인 단점을 살펴보았고, 해결 방안에 대해 알아보았다 이어 해결 방안을 구현해 어플리케이션의 보안 문제를 해결 해 보자! 목표 앞서 쿠키에 중요한 정보를 보관하는 방법에는 여러가지의 보안 이슈가 발생했었다. 이 문제를 해결하려면 결국 중요한 정보를 모두 서버에 저장 해야 한다. 그리고 클라이언트와 서버는 추정 불가능한 임의의 식별자 값으로 연결 해야 한다. 이렇게 서버에 중요한 정보를 보관하고 연결을 유지하는 방법을 세션 이라 한다. 세션 동작 방식 세션을 어떻게 개발할지 먼저 개념을 이해해보자. 로그인 사용자가 , 정보를 전달하면, 서버에서 해당 사용자가 맞는지 확인을 한다. 세션 생성 세션 ID를 생성하는데, 추정 불가능 해야하는 값이여야만 한다. 그래서 사용하는것이 ****이다. 해당객체는 절대 겹치지 않는 임의의 값을 만들어주는 객체로, 쿠키에 해당옵션을 주기에 아주 적당하다. ex) …

December 07, 2023
SpringBoot
/static/94ea5dbd60dd10b2bce1af75da7db0f8/springboot.png
SpringBoot의 로그인 처리 쿠키와 세션(part.4 세션 쿠키 활용)

🎈 로그인 성공 시 세션 쿠키 생성 지난 시간에 이어 로그인에 필요한 세션 쿠키를 생성해 보도록 하자. 여기서 우리가 집중하여 볼것은 쿠키 생성 로직이다. 쿠키 생성 로직 로그인에 성공시 쿠키를 생성하고 에 담는다. 쿠키의 이름은 이고, 값은 회원의 를 담아둔다. 웹 브라우저는 종료 전까지 회원의 값(id)를 서버에 지속적으로 보내줄것이다. 실행 크롬 브라우저를 통해 HTTP 응답 헤더에 쿠키가 추가된 것을 확인할 수 있다. 🌵 홈화면 로그인처리 HomeController 기존 메소드의 있는 어노테이션은 꼭 주석처리를 하자. 를 사용하면 편리하게 쿠키를 조회 할 수 있다. 로그인 하지 않은 사용자도 홈에 접근할 수 있기 때문에 로 해주어야 한다. 로직 분석 로그인 쿠키(memberId)가 없는 사용자는 home()으로 보내며, 추가로 로그인 쿠키가 있어도 회원이 없다면, home으로 보낸다. 로그인 쿠키(memberId)가 있는 사용자는 로그인 사용자 전용 홈 화면인 으로 보낸다…

December 07, 2023
SpringBoot
/static/aab7211514b9b25883f182daf61b4866/thymeleaf.png
Thymeleaf-Basic(part.5 타임리프의 연산)

🎈 연산 타임리프에서의 연산은 자바와 크게 다르지 않다. 다만 HTML안에서 사용되기 때문에 ****를 사용하는 부분에서만 주의하면 된다. BasicController에 추가 operation.html 비교 연산 : HTML 엔티티를 사용해야 하는 부분을 정말 주의해야한다. 참고로 필자는 초반에 이러한 문제로 상당히 난항을 겪었다…ㅋㅋ 타임리프에 익숙치 않은 사용자라면 유의해야겠다. =gt , =lt , =ge , =le , =not , =eq , =neq,ne 조건식 : 자바의 조건식과 유사하다. ****처럼 삼항연산이 가능하다.(강력한 기능이다. 사용 할 일이 많아질듯 하다.) Elvis연산 : 조건식의 편의성을 업그레이드한 느낌이다. No-Operation : 언더바로 마치 타임리프가 작동하지 않는 것 처럼 동작하게 한다. 이것을 잘 활용하면 HTML태그에 내용을 그대로 활용 할 수 있다. 그래서 마지막의 예를 보면 의 부분이 그대로 출력 되는 것을 볼 수 있다! 🐠 속성 값…

December 07, 2023
Thymeleaf
/static/94ea5dbd60dd10b2bce1af75da7db0f8/springboot.png
SpringBoot의 로그인 처리 쿠키와 세션(part.3 로그인 기능 개발)

🎈 로그인 기능 이전에 만들었던 코드를 베이스로 하여 로그인 기능을 개발 해 보겠다. 우선은 로그인 ID, 비밀번호를 입력하는 부분에 집중해보자! (추후에 쿠키와 세션을 사용하여 단점을 하나씩 잡아가는 방식으로 진행하겠다.) 요구사항을 한번 더 확인하고 기능구현에 들어가보자. 위의 코드를 살펴보면 로그인의 핵심 비즈니스 로직은 회원을 조회한 다음에 파라미터로 넘어온 와 비교해서 같으면 회원을 반환하고 만약 다르다면, 을 리턴시킨다. 의 기능을 사용하여 비밀번호를 비교하였다. MemberRepository의 메소드를 확인해보면, 와 같이객체에 맴버를 감싸 반환한다. 이 Optional객체는 이러한 필터기능을 제공한다(자바8이상) ===== 🌵 LoginForm & Controller / View LoginForm LoginController.java 로그인 컨트롤러는 로그인 서비스를 호출하여 로그인에 성공하면, 홈 화면으로 이동시키고, 로그인에 실패하면 를 사용하여 글로벌 오류를 …

December 07, 2023
SpringBoot