[OAuth2 + JWT] 소셜 로그인 구현(Google, Naver, Kakao, Apple)
2025. 3. 11. 20:49
프로그래밍/Spring Boot
소셜 로그인을 구현하기에 앞서 책임 분배를 어떻게 할지 정해보자1. Front2. Back[개발 환경]Front : React Native ExpoBack : Spring Boot[구현할 소셜 로그인]Google, Naver, Kakao, Apple 1의 경우 라이브러리를 install 해서 구현 가능인증을 끝내고 사용자 정보를 Back으로 보내면 됨 2의 경우 웹 뷰를 띄워서 해당 앱에서 로그인하는 방식Oauth2 Provider를 통해 리디렉션 방식으로 인증 수행 1로 구현하면 앱 내부에서 로그인 가능2로 구현할 경우 해당 앱(Google, Naver, Kakao, Apple)으로 넘어가서 로그인을 하는 방식 크게 정리하면 위와 같은데 토큰 관리 및 보안상의 이유로 2번을 선택함(보안상의 이유는 Ba..
[Spring Boot] 파일 확장자 확인
2023. 12. 4. 20:36
프로그래밍/Spring Boot
파일 확장자 확인 Tika 라이브러리를 통하여 파일 확장자를 확인하는 방법을 간단하게 공유해보고자 함 1. gradle 추가 mvn repository에서 확인 가능 implementation group: 'org.apache.tika', name: 'tika-core', version: '1.4' 2. Tika import 후 사용 import org.apache.tika.Tika; public void Test() { File pdfFile = new File("경로/파일명.pdf"); Tika tika = new Tika(); String mimeType = tika.detect(file); if("application/pdf".equals(mimeType)) { ... } }
[Spring Boot] REST API naming 규칙
2023. 10. 4. 20:34
프로그래밍/Spring Boot
REST API naming 간단 정리 명사 사용 동사는 사용 X GET /manage-order (X) GET /order-management (O) 복수형 사용 GET /order (X) GET /orders (O) 하위 리소스는 /를 이용하여 나타냄 PUT /users/{id}/orders uri는 소문자 사용 GET /Users (X) GET /users (O) camelCase 대신 snake-case 사용 이때 _(underbar) 대신 -(hyphens) 사용한다는 것도 기억해두기 GET /orderManagement (X) GET /order_management (X) GET /order-management (O)

[Spring Boot Error] Syntax error in SQL statement "drop table if exists [*]user cascade "; expected "identifier"; SQL statement: 에러 해결 방법
2023. 8. 21. 20:41
프로그래밍/Spring Boot
user entity 작성 후 Run 했더니 해당 에러 발생 발생 원인 user는 대부분의 데이터 베이스에서 예약어로 사용됨 그렇기에 user를 테이블 이름 등의 식별자로 사용하는 경우 에러가 발생할 수 있음 해결 방법 2가지 1. 테이블 명을 user 대신 member로 변경 2. user 테이블을 그대로 사용하고 싶다면 entity에 아래와 같은 Table 어노테이션 사용하기 @Table(name = "\"user\"")

[Spring Boot Error] Required request parameter 'xxx' for method parameter type String is not present Error
2023. 6. 30. 20:54
프로그래밍/Spring Boot
Required request parameter 'xxx' for method parameter type String is not present 에러 발생 원인 Controller에서 Prameter 값을 받아올 때 null이거나 Type이 맞지 않는 경우 발생 해결 방법 @RequestParam의 required 속성을 false로 설정하거나 null 을 받아오면 안되는 경우 파라미터로 넘겨주는 값을 확인해보기 @RequestParam의 required 속성은 default true임 예시 public List getSampleList(@RequestParam(value="customerNo", required=false) String customerNo) throws Exception { return..
[Spring Boot] @DeletedMapping에서 @RequestBody 사용?
2023. 5. 16. 20:09
프로그래밍/Spring Boot
@DeletedMapping에서 @RequestBody 사용이 안되는 이유와 대체 방안 @DeletedMapping은 HTTP DELETE 요청을 처리하는데 사용함 DELETE 요청은 요청 바디를 가지지 않는 것이 일반적임 그렇기에 @RequestBody 사용하여 요청 바디를 수신하는 것이 지원되지 않음 대체 방법 👇 @DeletedMapping에서 데이터 전달이 필요한 경우 @RequestParam을 사용하거나 @RequestBody를 전달받아야 하는 경우라면 @DeletedMapping 대신 @PutMapping을 사용하기

[Spring Boot Error] Request method 'PUT' is not supported
2023. 5. 4. 20:34
프로그래밍/Spring Boot
Request method 'PUT' is not supported 발생 원인 controller에 @PutMapping이 존재하지 않아 발생 내 경우 controller 작성해놓고 서버 재시작을 안해서 발생함 해결 방법 controller mapping 된 부분 확인하여 'PUT'으로 변경하기
[Spring Boot Error] Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN' 원인과 해결 방법
2023. 3. 30. 23:24
프로그래밍/Spring Boot
Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN' 에러 스프링 시큐리티에서 CSRF(Cross-site Request Forgery) 보안 기능을 사용할 때 발생하는 에러 보안 기능이 동작하지 않아 발생하거나 설정이 잘못되어 발생할 수 있음 에러 발생 원인 이 에러는 주로 CSRF 토큰 값이 전달되지 않았거나, 전달된 토큰 값이 유효하지 않을 때 발생함 스프링 시큐리티에서는 CSRF 보안 기능을 사용할 때, 사용자의 세션에 저장된 CSRF 토큰 값과 요청으로 전달된 CSRF 토큰 값을 비교하여 일치하지 않으면 이 에러를 발생시킴 해결 방법 CSRF 보안 기능 해제 가장 간단한 해결책은 C..

[SpringBoot Error] error: Cask 'adoptopenjdk11' is unavailable
2023. 2. 23. 20:33
프로그래밍/Spring Boot
error: Cask 'adoptopenjdk11' is unavailable 해결 방법 프로젝트 내의 jdk 버전 맞춰보고, jdk 재설치도 해봤지만 error가 해결이 안돼서 SpringBoot 버전을 바꾸니 해결됨 나의 경우에는 SpringBoot 버전과 jdk가 충돌된 듯 함 Spring Initializr에서 Spring Boot 버전을 기존 다운로드한 버전보다 한 단계 아래로 변경하니 error 해결 아래의 체크한 부분쪽에서 버전을 바꿔주기
[Spring boot] @NotNull, @NotEmpty, @NotBlank 차이
2022. 12. 1. 20:52
프로그래밍/Spring Boot
@NotNull, @NotEmpty, @NotBlank javax.validation.constraints package에 포함된 기능으로 api에서 값을 입력받을 때 validation 체크를 위해 사용되는 어노테이션 NotNull null을 허용하지 않음 "" 이나 " " 은 허용 NotEmpty 주석이 달린 요소가 null 또는 비어 있는지 확인 null 과 "" 둘 다 허용하지 않음 " "은 허용 NotBlank 빈칸 혹은 공백만 있는 경우를 허용하지 않음 null 과 "" 과 " " 모두 허용 X 예시 String text = null; @NotNull = false @NotEmpty = false @NotBlank = false String text = ""; @NotNull = true @N..