일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- Kernighan의 C언어 프로그래밍
- 자바편
- 이터레이터
- 친절한SQL튜닝
- 구멍가게코딩단
- /etc/network/interfaces
- 자료구조와함께배우는알고리즘입문
- 서버설정
- 목록처리
- 자료구조와 함께 배우는 알고리즘 입문
- 병합
- merge
- 페이징
- 코드로배우는스프링웹프로젝트
- 네트워크 설정
- 처음 만나는 AI수학 with Python
- 리눅스
- 스프링 시큐리티
- GIT
- 처음 만나는 AI 수학 with Python
- 깃
- 데비안
- 알파회계
- network configuration
- iterator
- resttemplate
- 코드로배우는스프링부트웹프로젝트
- 티스토리 쿠키 삭제
- 선형대수
- 스프링부트핵심가이드
- Today
- Total
목록분류 전체보기 (320)
bright jazz music
지난 번 포스팅에서는 회원이 로그인을 하면 토큰이 발급되고, 인증이 필요한 페이지로 이동하려 할 때 DB에서 해당 토큰을 검증하고, 이동한 후에는 해당 회원의 primary id를 출력해 주는 과정을 다루었다. //AuthController.java @PostMapping("/auth/login") public SessionResponse login(@RequestBody Login login){ String accessToken = authService.signin(login); return new SessionResponse(accessToken); } ### auth.http POST http://localhost:8080/auth/login Content-Type: application/json ..
이 포스팅에서는 UUID를 통해서 세션 토큰을 발급받고 인증을 요청하는 부분을 진행한다. 로그인 - 토큰 발급 - DB를 통해서 인증을 확인한 뒤 - 인증 관련 페이지로 라우팅 - 로그인하면 응답에 토큰이 날아옴. - 이 토큰을 향후 게시글 쓰기 같은 인증이 필요한 페이지에 진입하기 위해, - header에 Authorization값으로 넣어준다. - 인증이 필요한 해당 요청했을 때 인증이 되고 해당 회원의 primary id를 출력해 준다. - 아마 숫자 1, 또는 2가 결괏값으로 나올 것이다. 0.현황 발급 받은 세션을 보내면 서버에서 검증하는 코드 작성. 현재는 WebMvcConfigurer에 등록한 AuthResolver(implements HandlerMethodArgumentResolver)를..
클라이언트 입장에서는 전송하기 위해 세션(=accessToken)이 필요하다. 현재는 AuthService에서 user.addSession()만 할 뿐 그 세션 값을 가져오지는 않고 있다. 1. User 클래스의 addSession() 메서드가 세션을 반환하도록 설정 //User.java package com.endofma.blog.domain; import lombok.AccessLevel; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; import javax.persistence.*; import java.time.LocalDateTime; import java.util.ArrayList; import jav..
로그인 할 때 세션 토큰을 발급하여 인증에 사용할 수 있도록 개선한다. 1. AuthService 생성 및 AuthController 수정 여기서 로그인 및 토큰 발급처리를 진행한다. //AuthService.java package com.endofma.blog.service; import com.endofma.blog.domain.User; import com.endofma.blog.exception.InvalidSigninInformation; import com.endofma.blog.repository.UserRepository; import com.endofma.blog.request.Login; import lombok.RequiredArgsConstructor; import org.sprin..
현재 DB에 값이 들어가 있지 않아 테스트가 번거롭다. 따라서 스프링을 실행할 때 sql파일을 추가하여 자동으로 값을 밀어 넣는 방법을 사용한다. 1. data.sql 파일 생성 data.sql 파일을 생성하여 resource 폴더 아래에 위치시킨다. 그 다음 application.yml 또는 application.properties 파일의 jpa설정을 수정한다. User엔티티 파일에 맞춰 sql 파일을 생성한다. -- data.sql -- INSERT INTO `users` (name, email, password, created_at) values ('catnails', 'catnails@gmail.com', '1234', '2023-02-14 21:58:00'); '가 아니라 `이다. 정 껄끄러우면..
지난 포스팅에서는 인증값을 헤더에 넣어서, 헤더에 "Authorization" 값이 존재하는 경우 API에 접근할 수 있도록 하였다. 그러나 이렇게 값이 있기만 해도 인증을 완료하는 경우는 거의 없다. 보통은 DB에서 매칭 작업을 하고 나서 토큰을 발급하여 인증하도록 하는 것이 일반적이다. (DB에서 사용자 확인 - 매칭 - 토큰발급 토큰은 로그인 시에 발급받는 것이 일반적이다. 현재 로그인 기능이 존재하지 않으므로 로그인 기능을 만들어야 한다. 1. 로그인을 위한 컨트롤러 생성: AuthController.java //AuthController.java package com.endofma.blog.controller; import lombok.RequiredArgsConstructor; import o..
지난 포스팅에서는 AuthResolver에서 getParameter로 넘어오는 값을 분석해서 인증작업을 해줬다. getParameter로 가져오면 다른 정보와 충돌이 생길 가능성이 있다. 따라서 인증정보는 헤더를 통해서 가져오는 것으로 변경한다. 1. ArgumentResolver 변경 //AuthResolver.java package com.endofma.blog.config; import com.endofma.blog.config.data.UserSession; import com.endofma.blog.exception.Unauthorized; import org.springframework.core.MethodParameter; import org.springframework.web.bind.su..
AurgumentResolver: preHandle에서 http 요청의 헤더를 검사한다. request parameter에 key값이 "accessToken"인 값이 있으면 해당 값을 요청에 setAttribute 해준다. 이 때 key 값은 임의로 정해주어도 된다. 여기서는 "userName"을 key로, accessToken을 value로 넣어줬다. 여기서는 string 값을 넣어줬지만 object를 넘길 수도 있다. request.setAttribute("userName", accessToken);
blog 26 포스팅에서 사용했던 get parameter, 또는 헤더 인증의 경우, 간단하게 값을 확인해서 if문으로 비교하여 api를 허용/거부처리 해줄 수 있었다. 0. 문제 그러나 이 방법의 경우 메소드가 추가될 때마다 동일한 작업을 반복하여 작성해야 한다는 단점이 있다. 매번 값을 꺼내고 확인하고, 인증값이 변경될 경우 모든 컨트롤러 메서드마다 변경해줘야 한다. 한 군데에서 한 번의 작업으로 전역적이고 반복적인 작업을 처리할 수 있는 방법이 필요하다. 1. 테스트 할 controller 생성하기 인터셉터는 요청이 컨트롤러 레이어에 진입하기 전에 공통된 작업을 해 준다. 인터셉터를 생성하기 전에 인터셉터를 테스트 할 핸들러를 생성하자. //postController.java @GetMapping(..
서버 입장에서는 들어온 요청의 인증 여부만 확인하여 인증이 된 요청이라면 API를 사용하도록 해주면 된다. - 새로운 기능을 추가할 때 과거에 작성한 코드가 맘에 들지 않을 수 있다. 그럴 때는 현재 내가 작성하려는 기능을 거기에 덧붙이지 말고, 과거의 코드를 리팩토링 한 뒤에 추가하는 버릇을 들이자. 그렇지 않는다면 레거시 코드로 남는 것이다. 리팩토링은 시간을 내서 하는 것이 아니다. 인증을 하는 방법 //PostControllerTest.java @Test @DisplayName("글 작성 요청시 DB에 값이 저장된다.") void test3() throws Exception { //given PostCreate request = PostCreate.builder() .title("제목입니다.") ..