728x90

Programming 275

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

Spring - 데이터베이스를 통한 토큰 검증 / 쿠키를 통한 인증 및 검증

1. 데이터베이스를 통한 토큰 검증 - Test 코드 @Test @DisplayName("로그인 후 권한이 필요한 페이지 접속한다. /test2") void test4() throws Exception { //given Member member = Member.builder() .name("백인수") .email("saymay10@naver.com") .password("1234") .build(); Session session = member.addSession(); //addSeeion()을 하게 되면 Session 객체가 생성되고, Session 객체가 생성되는 것만으로도 //accessToken 필드에 값이 들어간다. memberRepository.save(member); //expected mo..

Programming/Spring 2023.10.06

Spring - 예외처리 복습!!!!!!!

- ExceptionController.java @Slf4j @ControllerAdvice public class ExceptionController { @ResponseBody @ExceptionHandler(IslogException.class) public ResponseEntity islogException(IslogException e) { int statusCode = e.getStatuscode(); ErrorResponse body = ErrorResponse.builder() .code(String.valueOf(statusCode))//애초에 받아올 때 String으로 받아오던가 반환값을 뭐 알아서 변경하면 된다. .message(e.getMessage()) .validation(e...

Programming/Spring 2023.10.05

Spring - API 인증 (http, 고정 인증 로그인 구현)

- Resolver를 사용 할 때 파라미터로 인증 토큰을 받게 되면 값이 중복 될 수 있기 때문에 header를 통해 받는 것이 좋다. ....... @Override public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception { String accessToken = webRequest.getHeader("Authorization"); if (accessToken == null || accessToken.equals("")) { throw new Unau..

Programming/Spring 2023.10.04

Spring - API 인증 (ArgumentResolver)

- ArgumentResolver란 Spring MVC에서 사용되는 인터페이스로, 컨트롤러 메서드의 매개변수를 해석하고 해당 매개변수에 값을 제공하는 역할을 한다. 이를 통해 컨트롤러 메서드에서 다양한 매개변수 타입을 처리하고 커스텀한 바인딩 로직을 구현할 수 있다. - HandlerMethodArgumentResolver 인터페에스를 상속 받고 다음과 같은 메서드를 정의한다. 1. supportsParameter(MethodParameter parameter) : Resolver가 특정 매개변수를 지원하는지 여부를 판단하는 데 사용된다. MethodParameter 객체를 인자로 받고, 지원하는 매개변수인 경우 true를 반환하고, 그렇지 않은 경우, false를 반환해야 한다. 2. resolveAr..

Programming/Spring 2023.10.04

자주 헷갈리거나 까먹는 것들 정리

- super - super가 단독으로 사용되면, 자식 클래스에서 부모 클래스의 생성자를 호출한다. - HttpServletRequest 속성에 대해 HttpServletRequest는 Java Servlet에서 HTTP 요청과 관련된 다양한 정보를 제공하는 인터페이스입니다. 이 인터페이스를 사용하여 HTTP 요청의 다양한 속성(attribute) 및 정보를 읽어올 수 있습니다. 주요 HttpServletRequest 메서드와 해당 메서드를 통해 얻을 수 있는 정보는 다음과 같습니다: getHeader(String name): 지정된 이름의 HTTP 헤더 값을 반환합니다. 예를 들어, request.getHeader("User-Agent")는 User-Agent 헤더 값을 반환합니다. getMethod(..

Programming/TMP 2023.10.04

Spring - API 인증 (파라미터, Header, Interceptor)

- API 인증은 요청이 들어올 때 인증된 요청인가 허용된 사용자인가 확인 후 수행하기 위해서 사용한다. - Get Parameter 방식 @PostMapping("/posts") public void post(@RequestBody @Valid PostCreate request, @RequestParam String authorization) { if(authorization.equals("bis")){ request.validate(); postService.write(request); } } 1. RequestParam 방식을 이용하여 쿼리 파라미터로 넘어오는 값을 비교하는 방법이 있다. - test 코드 //when mockMvc.perform(MockMvcRequestBuilders.post("..

Programming/Spring 2023.10.04

AXIOS

- AXIOS는 Javascript 및 Node.js 환경에서 사용할 수 있는 HTTP 클라이언트 라이브러리이다. - Axios를 사용하면 웹 애플리케이션에서 HTTP 요청을 보내고 받는 작업을 간단하게 처리할 수 있다. - 이 라이브러리는 Promise 기반의 API를 제공하여 비동기적으로 HTTP 요청을 수행할 수 있으므로 서버와의 통신이나 API 요청을 쉽게 처리할 수 있다. 1. 간편한 HTTP 요청 : Axios를 사용하면 GET, POST, PUT, DELETE 등의 HTTP 요청을 쉽게 생성하고 보낼 수 있다. 2. Promise 기반 : Axios의 HTTP 요청은 Promise를 반환하므로 비동기적인 코드를 작성할 수 있다. 3. 요청 및 응답 인터셉터 : Axios는 요청을 보내기 전과..

Programming/TMP 2023.10.02

React - ReactDOM 초기 root 렌더링 과정

- index.html - 위의 코드에서 가 React 애플리케이션을 렌더링할 컨테이너 역할을 한다. 1. JavaScript 파일 작성 : React 애플리케이션의 JavaScript 파일을 작성한다. 이 파일은 React 컴포넌트를 정의하고, 이 컴포넌트를 'ReactDOM'을 사용하여 'index.html' 파일의 컨테이너에 렌더링 하는 역할을 한다. 2. 'ReactDOM.render' 또는 'ReactDOM.createRoot' 사용 : 'ReactDOM'은 React 엘리먼트를 'index.html' 파일의 컨테이너에 렌더링하는 메서드를 제공한다. React18부터는 'createRoot' 메서드를 사용하여 렌더링을 시작할 수도 있다. - 임의의 js 파일 import React from 'r..

Programming/React 2023.09.21
728x90