728x90

Programming/Spring 86

Spring - Spring <-> AWS S3 첨부 파일 업로드, 삭제 (첨부 파일 업로드 수정 및 삭제)

1. S3 생성 AWS S3를 통해 bucket을 생성한다. - bucket : 다수의 객체를 관리하는 컨테이너로 파일시스템이라고 보면 된다. 체크를 하지 않으면 public으로 해당 버킷에 접근 할 수 있다. public으로 접근 가능하다는 것은 외부에서 해당 버킷에 접근이 가능하다는 뜻이다. 2. 사용자 생성 (IAM) AWS IAM을 통해 사용자를 생성한다. 사용자의 권한 정책으로 AmazonS3FullAccess 권한을 부여해준다. 3. 액세스 키 생성 새롭게 생성한 사용자를 선택하여 액세스 키를 생성해준다. 생성한 액세스키, 비밀 액세스 키는 따로 확인 가능하도록 보관해놓는다. 4. 스프링 연동 4.1. build.gradle 의존성 추가 implementation 'org.springframe..

Programming/Spring 2023.12.12

Spring - REST API 간단한 연습 (RestController 사용)

지금까지 프로젝트를 진행하면서 REST API에 대한 반환값으로 String 즉, View로 전달하는 방식을 많이 사용하였다. @RestController를 사용하는 방법 또한 크게 다른점은 없지만 많이 사용해보지 않았기 때문에 익숙함을 위해 연습하기 위한 작은 프로젝트다. - ERD - RestaurantApi.java @RequiredArgsConstructor @RestController public class RestaurantApi { private final RestaurantService restaurantService; @GetMapping("/restaurants") public List getRestaurants() { return restaurantService.getAllRestau..

Programming/Spring 2023.11.27

Spring Test Code 관련 - (MockMvc 등... 여러가지)

- MockMvc - MockMvc 1. Spring MVC 컨트롤러를 테스트하기 위해 사용된다. 이를 통해 웹 애플리케이션의 HTTP 요청과 응답을 시뮬레이션하고 테스트하는 것이 가능하다. - @AutoConfigureMockMvc 1. Mock 객체를 자동 주입하기 위해 사용한다. @SpringBootTest @AutoConfigureMockMvc public class MyControllerTest { @Autowired private MockMvc mockMvc; // 테스트 코드 작성 } 2. 위와 같이 MockMvc를 주입 받아 테스트 코드를 작성 할 수 있다. - ObjectMapper 1. JSON 데이터와 Java 객체 간의 변환을 수행하는 데 사용되는 라이브러리다. @Test @Disp..

Programming/Spring 2023.11.19

Spring - 페이징, Querydsl RE

- Page - Pageable - PageRequest - 페이징 구성 예시 - Querydsl - JpaQueryFactory - Querydsl 추가 및 예시 - 페이징, Querydsl 적용 - Page - Page는 페이징된 데이터와 페이징 정보를 포함하는 객체이다. 쿼리 결과의 일부 데이터를 나타내며, 페이지 정보, 총 항목 수, 페이지 번호, 데이터 목록 등을 포함한다. getContent() 현재 페이지의 데이터 목록을 반환한다. getTotalPages() 총 페이지 수를 반환한다. getTotalElements() 전체 항목 수를 반환한다. getNumber() 현재 페이지 번호를 반환한다. getSize() 페이지 크기 (한 페이지당 항목 수)를 반환한다. - Pageable - Pa..

Programming/Spring 2023.11.14

Spring - 파일 업로드 Re

- Spring은 MultipartFile이라는 인터페이스로 멀티파트 파일을 매우 편리하게 지원한다. - 일반적인 파일 업로드 방법 - 아래 파일 업로드 방법은 가장 기본적인 방법이다. input을 통해 전달받은 file을 파일명 그대로 지정된 위치에 파일을 저장하는 방식이다. - upload-form.html 상품 등록 폼 상품 입력 상품명 파일 1. HTML에서 파일을 전송할 때 form에 enctype="multipart/form-data"를 추가해준다 . 그 이유는 첨부파일의 경우 문자가 아닌 바이너리로 전송해야 하기 때문이다. 2. HTML input의 속성을 file로 지정하게 되면 첨부파일을 추가할 수 있게된다. - SpringUploadController.java @Slf4j @Contro..

Programming/Spring 2023.10.17

Spring - Spring Security (Method Security 적용 및 인증 적용 확인)

- Method Security - Method Secuity는 애플리케이션의 메소드 레벨에서 보안 규칙을 정의하고 적용할 수 있게 해주는 기능이다. - SecurityConfig.java @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception{ return http .authorizeHttpRequests() // .requestMatchers(HttpMethod.POST,"/auth/login").permitAll() // .requestMatchers(HttpMethod.POST,"/auth/signup").permitAll() //위의 방법을 사용하면 무한 페이지 리다이렉트 될 수 있다...? ..

Programming/Spring 2023.10.13

Spring - Spring Security (예외 핸들러 처리, 커스텀 인증 생성)

- Handler - 핸들러(Handler)를 생성하는 이유는 웹 애플리케이션에 특정 이벤트 또는 요청에 대한 사용자 정의 로직을 실행하고 처리하기 위함이다. - SecurityConfig.java @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception{ return http .authorizeHttpRequests() ..................... .defaultSuccessUrl("/") //성공한 뒤 이동하는 페이지 .failureHandler(new LoginFailHandler(objectMapper)) //로그인 실패시 발생하는 핸들러 .and() .exceptionHandling(..

Programming/Spring 2023.10.12

Spring - Spring Security (기본 설정, 로그인 폼 커스텀, UserDetailService, 역할 및 권한, remeberMe(자동 로그인))

- Spring Security - Spring Security는 Spring Framework 기반의 애플리케이션에서 보안과 관련된 기능을 처리하는 데 사용되는 강력한 보안 프레임워크이다. - Spring Security를 사용하면 애플리케이션의 인증(Authentication) 및 권한 부여(Authorization) 관련 기능을 구현하고 관리할 수 있다. 1. 인증(Authentication) 1.1. 사용자가 누구인지 확인하기 위한 인증 메커니즘을 제공한다. 1.2. 주요 인증 방식으로는 폼 인증, HTTP 기본 인증, OAuth, LDAP, SSO(Single Sign-On) 등이 있다. 1.3. 사용자 인증 정보는 사용자 이름/암호, 토큰, 인증 서버 등을 통해 확인된다. 2. 권한 부여(Au..

Programming/Spring 2023.10.10

Spring - Signup 비밀번호 암호화 (crypto, SCryptoPasswordEncoder)

- Crypto - 암호화는 정보나 데이터를 안전하게 보호하고 전송하기 위한 기술적인 방법이다. 1. 암호화는 데이터를 암호화(암호키를 사용하여 원본 데이터를 불가독하게 만드는 과정)하고, 필요할 때 이를 복호화(암호화된 데이터를 원래 상태로 복원하는 과정)하는 과정이 있다. 2. 암호화 알고리즘 : AES, RSA, DES, SHA 알고리즘이 대표적이다. 3. 대칭 암호화, 비대칭 암호화 : 대칭 암호화에서는 동일한 키를 암호화와 복호화에 모두 사용한다. 반면, 비대칭 암호화에서는 공개 키와 비밀 키라는 서로 다른 두 키를 사용한다. 4. 해시 함수 :고정된 길이의 해시 코드(또는 해시 값)를 생성하는 함수로, 입력 데이터의 일부나 전체에 대한 고유한 값을 생성한다. - SCryptPasswordEnc..

Programming/Spring 2023.10.09

Spring - JWT / 토큰 생성, 암호화 키 분리 및 개선

- JWT란 JSON Web Token의 약자로, 웹 및 애플리케이션 보안에서 사용되는 토큰 기반의 인증 방식 중 하나이다. 주로 사용자 인증 및 데이터 교환에 쓰이며, 웹 애플리케이션, 모바일 애플리케이션 및 웹 API에서 널리 사용된다. - JWT 구성 1. Header : JWT의 유형과 해싱 알고리즘 정보를 포함한다. 2. Payload : JWT에 저장되는 클레임(claim) 정보를 포함한다. 클레임은 토큰에 관련된 데이터를 설명하며, 세 가지 종류가 있다. 2.1. Registered claims : JWT에서 미리 정의된 클레임으로, "iss"(발급자), "sub"(주체), "exp"(만료 시간)등이 있다. 2.2. Public claims : JWT 사용자 정의 클레임으로, 공객적으로 사용..

Programming/Spring 2023.10.06
728x90