분류 전체보기

·Spring Boot
결제 부분에서는 어떻게 구현을 해야할까? 환경 -- IntelliJ Community 2023.1.5 Spring Boot 3.2.1 JDK 17 build.gradle [ dependencies ] repositories { mavenCentral() // 포트원(구 아임포트)은 maven 기반으로 의존성을 추가한다. (여기에 jitpack.io를 추가하면 gradle에서도 iamport라이브러리를 추가할 수 있다.) maven { url 'https://jitpack.io' } } dependencies { // 포트원(구 아임포트) 라이브러리 implementation 'com.github.iamport:iamport-rest-client-java:0.2.23' } 포트원은 maven 기반의 라이브..
·Spring Boot
쇼핑몰에서 JWT를 이용하여 로그인 기능을 구현하려면코드를 어떻게 작성해야 할까?      환경 --IntelliJ Community 2023.1.5Spring Boot 3.2.1JDK 17 build.gradle  [ dependencies ]implementation 'org.springframework.boot:spring-boot-starter-security'testImplementation 'org.springframework.security:spring-security-test'implementation 'io.jsonwebtoken:jjwt-api:0.11.5'implementation 'io.jsonwebtoken:jjwt-impl:0.11.5'implementation 'io.jsonw..
·Self Q&A
JWT를 이용하여 로그인을 구현하려고 할 때 기본적인 JWT만 이용하면 보안적으로 좋아보이지 않아서 이 보안을 높이는 방법들은 무엇이 있을까? 기본 JWT 방식 -- 사용자(클라이언트)가 서버에게 로그인 정보를 전달 서버는 요청 받은 로그인 정보와 그 외의 정보를 가지고 암호화하여 Token 생성 후 다시 클라이언트에게 응답 클라이언트는 이 후 서버에게 요청할 때마다 추가로 Token을 전달 서버는 Token을 검증 후 정상이라고 판단하면 로직을 수행 -- Token을 탈취 당하면 탈취자는 무제한으로 Token을 사용할 수 있는데? [ Access Token에 유효기간 정의 ] -- 우선 JWT 방식은 Stateless(무상태성)이라서 Token을 서버에서 제어할 수가 없다. 그래서 탈취를 당하면 서버에..
·Spring Boot
Spring에서 제공하는 Security는 어떻게 이루어져 있는가? Spring Security란? -- Spring 프레임워크의 기반으로 만들어진 애플리케이션에서 보안을 담당하는 프레임워크이다. 주로 인증(Authentication), 권한 부여 또는 인가(Authorization), 보안 설정 등을 처리하는 데에 활용된다. 인증과 권한 또는 인가는 Filter 흐름에 따라서 처리된다. Filter는 Servlet(Dispatcher Servlet)으로 가기 전에 동작하므로 간단하게 설명하자면 HTTP 요청을 먼저 받아서 컨트롤러에 넘기기 전에 해당 요청을 먼저 검증하여 올바른 요청인지 판단한다. Dispatcher Servlet이란? HTTP 요청을 가장 먼저 받아서 적합한 컨트롤러에 전달해주는 프론..
·Self Q&A
쇼핑몰 프로젝트에서 로그인 기능을 구현하려는데 Session과 JWT 방법 중 무엇을 사용해야 하는가? 로그인 인증 기능이 왜 필요한가? -- 쇼핑몰에서 내 주문내역을 보고싶다면 로그인해서 내가 누구인지 알려주고 그 다음에 나의 주문내역을 확인해야한다. 로그인 페이지로 이동 아이디와 비밀번호를 입력하여 로그인 내 주문내역 페이지로 이동 주문내역 확인 이때 로그인을 계속 인증해주는 기능이 없다면 2번에서 로그인을 하고 다른 페이지로 이동하는 순간 내가 로그인을 했던 정보는 없어지게 된다. 그렇게 되면 4번에서 다시 로그인을 해줘서 나라는 것을 알려주고 나의 주문내역을 확인해야한다. 물론 내부적으로 로그인을 한 순간부터 다른 페이지로 이동할 때마다 로그인 정보를 함께 넘겨주는 코드를 작성하면 로그인 했던 정..
·Spring Boot
데이터를 새로 추가하거나 수정했을 때 당시의 날짜와 누가 했는지도 같이 데이터에 저장하려면 어떻게 해야 할까? Auditing 엔티티를 생성하거나 수정을 할 때 해당 시간과 수행한 사람을 찾기 위해서 사용한다. (생성일, 수정일, 생성자, 수정자) 스프링 데이터 JPA에서 제공하는 Auditing 1. 처음 스프링 부트를 설정해주는 클래스에 @EnableJpaAuditing 어노테이션을 적용시켜준다. @EnableJpaAuditing @SpringBootApplication public class ShoppingApplication { public static void main(String[] arg) { SpringApplication.run(ShoppingApplication.class, args);..
·Spring Boot
클라이언트에게 데이터만 반환하는 것이 아니라상태 코드도 함께 반환하고 싶을 때 어떻게 할까?      대표적인 방법 두 가지 반환 타입으로 ResponseEntity를 사용하기@RestControllerAdvice와 @ControllerAdvice 어노테이션을 사용하기    ResponseEntity HTTP 응답을 나타내는 클래스(REST API의 응답을 위해 사용하는 클래스)로클라이언트에게 응답의 상태코드, 헤더, 바디(body)를 포함하여 반환한다.  각 응답할 데이터는 status()     -     상태코드 작성 공간header()     -     헤더 작성 공간body()     -     바디 작성 공간를 사용해서 상태코드, 헤더, 바디를 반환한다.  status() 안에 상태 코드를 작..
·QueryDSL
스프링 부트 3에서 QueryDSL을 사용하려면 어떤 설정을 해줘야 할까? QueryDSL 라이브러리 추가하기 보통 스프링 부트 파일을 만드는 스타터스프링(https://start.spring.io/) 사이트에서 Dependencies에서 사용할 라이브러리들을 추가해주지만 QueryDSL은 지원해주지 않는다. 그렇다고 스프링 부트에서 QueryDSL에 대한 버전관리를 안해주는 것은 아니다. 스프링 부트에서 QueryDSL에 대한 버전관리는 해주는데 스프링 부트 스타터에서는 아직 없어서 별도로 직접 추가해줘야 한다. build.gradle 파일에서 dependencies에 QueryDSL 라이브러리를 추가해준다. implementation 'com.querydsl:querydsl-jpa:5.0.0:jaka..
아-니지
'분류 전체보기' 카테고리의 글 목록 (22 Page)