231114 TIL

SEULBI LEE·2023년 11월 14일
0

TIL

목록 보기
25/25

받아적기

@Bean
Bean으로 등록하고자 하는 메서드 위에 다는 애너테이션

PasswordEncoder 인터페이스
BCrybtPasswordEncorder 해시함수 암호화
.encode(변수명); : 암호화 메서드
.matches(기존암호,입력암호); : 암호 비교 메서드

같은 타입의 빈이 2개라면?
@Autowired는 Bean의 타입을 기본으로 찾고, 그 다음에는 Bean의 이름을 중심으로 찾음. 같은 타입의 Bean이 2개라면 이름으로 주입할 것.
혹은 우선적으로 주입하고 싶은 객체에 @Primary 애너테이션을 달아줄 것.
또는 각 Bean에 @Qualifier("이름")을 달고 주입 시 동일 애너테이션을 달아 식별할 것. qualifier와 primary를 동시에 사용했을 경우 qualifier의 우선순위가 더 높음.

Authentication 인증. 실제 유저인지 확인
Authorization 인가. 특정 리소스에 접근 가능 허용.

쿠키 : 토큰 저장소. 주로 헤더에 담아서 서버로 요청을 보냄.
세션 : 인증 정보. 세션 저장소에서 세션Id 발급, 유저 정보를 서버 전송 등.

JWT 기반.
서버에서 JWT로 암호화된 응답을 서버로 보냄.
쿠키 저장소에 JWT 토큰이 저장되어있고, 요청할 때마다 해당 토큰을 보냄.
저장소를 따로 쓰지 않고, 요청될 때마다 토큰의 유효 여부를 검증함.
세션저장소가 없다는 것이 쿠키-세션의 큰 차이.

쿠키와 세션은 모두 HTTP에 상태 정보를 유지하기 위해 사용된다.
세션은 서버에서 일정 시간동안 유지되는 세션 ID를 통해 클라이언트 상태를 유지하기 위해 사용된다.


쿠키에서 공백이 있으면 저장이 되지 않아, encoding이 필요하다.
URLEncorder.encode(변수, 형식)
Spring에서 쿠키 클래스를 제공합니다.
@CookieValue를 통해 쿠키값을 가져올 수 있습니다.


HttpSession을 통해 유일무이한 session ID를 발급할 수 있습니다.
Json Web Token

Secret Key를 통해 암호화, 검증을 진행합니다.
동시 접속자가 많을 때 서버 부하를 낮출 수 있습니다.
틀라이언트와 서버가 다른 도메인을 사용할 때 조습니다.

하지만
구현의 복잡도가 증가하고,
담는 내용이 많아질수록 네트워크 비용이 증가합니다.
그리고 일부만 만료시킬 방법이 없습니다.
그리고 Secret Key가 유출되면 조작이 가능합니다.


Util? : 다른 객체에 의존하지 않고 하나의 모듈로서 동작하는 메서드가 담긴 클래스

"Bearer " : 해당하는 값은 토큰입니다, 라고 알려주기 위해 토큰 앞에 붙임

@Value 애너테이션을 통해 secret key를 가져올 수 있음.
@Value("${jwt.secret.key}")

로그설정?
앱 동작 동안 프로젝트의 상태를 시간순으로 기록하는 것을 로깅이라고 한다.

  • @Slf4j (롬복)
  • LoggerFactory

@PostConstruct : 딱 한 번만 받아오면 되는 값을 사용할 때 요청을 새로 호출하는 것을 방지하기 위해 사용.

StringUtils.hasText : 공백 확인

0개의 댓글