며칠간 개인과제를 진행하느라 정신없이 보냈다.
강의를 듣으면서도 이해가 안가서 몇번씩 같은 내용을 반복하고 같은 코드를 여러번 쳐보면서 공부했다.
이번엔 인증,인가의 개념을 익히고과 JWT를 이용한 회원가입, 로그인 기능을 구현해야 했는데, 생각보다도 훨씬 더 어려웠던 것 같다.
코드가 길고 복잡해지고, 개념이 어려워지다보니 막막했는데 어찌어찌 예정대로 과제를 끝마칠 수 있었다.
코드를 작성하면서도 이게 맞는지 제대로 하고 있는건지 모르는 것 투성이지만, 일단은 문제없이 프로그램이 실행되고 시나리오 대로 기대값이 나왔으니, 제출 기한까지는 모르는 내용에 대해 공부하고 차근차근 코드를 수정해보려고 한다.
(필수는 아니지만 Lv2 난이도의 과제도 있으나 무리하지 않고 부족한 개념공부를 하기로 마음 먹었다.)
해당 유저가 실제 유저인지 인증하는 개념이다.
스마트폰에 지문인식, 이용하는 사이트에 로그인 하는 것과 같이, 실제 그 유저가 맞는지를 확인하는 절차이다.
해당 유저가 특정 리소스에 접근이 가능한지 허가를 확인하는 개념이다.
예를 들어, 관리자 페이지-관리자 권한 같은 것들을 들 수 있다.
쿠키-세션 방식은 서버가 특정 유저가 로그인 되었다는 상태를 저장하는 방식이다.
인증과 관련된 아주 약간의 정보만 서버가 가지고 있게 되고 유저의 이전 상태의 전부는 아니더라도
인증과 관련된 최소한의 정보는 저장해서 로그인을 유지시킨다는 개념이다.
JWT(JSON Web Token)란 인증에 필요한 정보들을 암호화시킨 토큰을 의미한다.
JWT 기반 인증은 쿠키/세션 방식과 유사하게 JWT 토큰(Access Token)을 HTTP 헤더에 실어 서버가 클라이언트를 식별한다.
실제로 위와 같이 생겼고 .
를 사용하여 세 부분으로 나뉘어져 있다.
알고리즘에 의해 암호화된 토큰을 해독하면 아래와 같은 모습이다.
가운데에 실제 유저의 정보가 들어있고, HEADER와 VERIFY SIGNATURE부분은 암호화 관련된 정보 양식이라고 생각하면 된다.
이름에서도 알 수 있듯이, save() 메소드는 엔티티를 DB에 저장하는 기능을 수행한다.
save() 메소드는 Spring Data 에서 정의한 CrudRepository 인터페이스의 메소드이다.
save() 메소드는 바로 DB에 저장되지 않고 영속성 컨텍스트에 저장되었다가
flush()
또는commit()
수행 시 DB에 저장된다.
save() 메소드와는 다르게 saveAndFlush() 메소드는 실행중(트랜잭션)에 즉시 data를 flush() 한다.
saveAndFlush() 메소드는 Spring Data JPA 에서 정의한 JpaRepository 인터페이스의 메소드이다.
saveAndFlush() 메소드는 save() 메소드와 달리, 즉시 DB에 변경사항을 적용하는 방식이다.