Open backendnovice opened 1 year ago
DaoAuthenticationProvider
는 UserDetailsService
와 PasswordEncoder
를 사용하여 username과 password를 인증하는 구현체이다. 다음과 같은 순서로 진행된다.
UsernamePassowordAuthenticationToken
을 ProviderManager
로 전달한다.UserDetailsService
를 통해서 해당 UserDetails
를 조회한다.PasswordEncoder
를 통해서 암호의 유효성을 검사한다.UsernamePasswordAuthenticationToken
은 SecurityContextHolder
에 적용된다.즉, DaoAuthenticationProvider
를 Bean으로 적용하고, UserDetails
와 UserDetailsService
를 커스터마이징하는 것으로 검증 로직을 대체할 수 있다는 것이다.
서로 연관된 dependency를 추가할 때는 항상 버전과 호환 여부를 검토해야만 할 것이다. 직접 겪은 사례를 통해서 확실히 깨닫게 되었다.
sec:
태그를 사용하기 위해서 Thymeleaf-Extras-Spring-Security5
dependency를 추가한다.Thymeleaf-Extras-Spring-Security6
로 변경한다.Spring Security는 Spring Boot가 3.x로 업데이트 되는 것에 맞춰서 6.x 버전을 출시하였다. 따라서 Thymeleaf-Extras-Spring-Security
또한 5
에서 6
으로 변경해야만 정상 작동하는 것이다.
Spring Docs :: DaoAuthenticationProvider Github :: thymeleaf-extras-springsecurity
Multipart
는 HTTP 프로토콜의 body
에 데이터를 분할하여 전송하는 것으로, 보통 파일을 전송할 때 사용한다. 관련하여 Content-type의 설정 이슈가 발생했기에 개념을 정리한다.
application/json
: API 구축에서 가장 일반적으로 사용하는 MIME 유형으로, JSON 데이터 표준을 의미한다.{
"name" : "username",
"email" : "username@email.com",
"password" : {
"value" : "password"
}
}
application/x-www-form-urlencoded
: 폼 데이터를 전송할 때 주로 사용하는 인코딩 방식으로, 각 필드를 key=value
, 구분자를 &
로 변환한다. Spring을 예로 들면 @RequestParam
을 사용하여 파라미터로 받아올 수 있다.POST /submit HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
username=John+Doe&password=Password
multipart/form-data
: 폼 데이터를 파일과 함께 전송하고자 할 때 사용하는 인코딩 방식으로, binary 형식으로 분할하여 전송한다. 폼에 enctype="multipart/form-data"
를 설정하여 적용할 수 있다.Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryNEesLHNz4NvHFzAA
------WebKitFormBoundaryNEesLHNz4NvHFzAA
Content-Disposition: form-data; name="files[0]"; filename="test.txt"
Content-Type: text/plain
aaaa
개인 프로젝트를 진행하며, branch를 단순하게 Github flow를 단순화시킨 형태(main
, develop
)로 진행하던 중, commit 기록이 일자의 형태로 merge
되는 허탈한 일을 겪었다.
이러한 병합 형태는 fast-foward
줄여서, ff
merge 라고 한다. 알고 보니 develop이 main의 commit들을 완전 포함하고 있었기에 발생한 것이었다. --no-ff
옵션을 주면 강제로 commit을 생성하고 병합할 수 있다.
참고 출처
Velog :: HTTP multipart/form-data 란? Velog :: x-www-form-urlencoded와 application/json의 차이 MicroFocus :: Send Data by Using a POST Method Backlog :: 브랜치 통합하기
설명 목적
프로젝트를 진행하며 어려웠던 부분이나, 새롭게 알게 된 부분, 정리하고 싶은 부분을 기록하기 위한 이슈.