일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 데비안
- 티스토리 쿠키 삭제
- 자료구조와함께배우는알고리즘입문
- GIT
- 자바편
- 이터레이터
- 코드로배우는스프링웹프로젝트
- 네트워크 설정
- ㅒ
- iterator
- 구멍가게코딩단
- baeldung
- Kernighan의 C언어 프로그래밍
- 서버설정
- /etc/network/interfaces
- 스프링부트핵심가이드
- 선형대수
- 코드로배우는스프링부트웹프로젝트
- d
- 자료구조와 함께 배우는 알고리즘 입문
- 리눅스
- 스프링 시큐리티
- 목록처리
- 친절한SQL튜닝
- network configuration
- 알파회계
- 처음 만나는 AI수학 with Python
- 처음 만나는 AI 수학 with Python
- 페이징
- resttemplate
- Today
- Total
목록분류 전체보기 (406)
bright jazz music
클라이언트 입장에서는 전송하기 위해 세션(=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("제목입니다.") ..
애플리케이션 서버가 종료되면 접속이 되지 않는다. nohup을 사용한다. nohup은 기본적으로 애플리케이션으로 들어오는 중단 명령어를 무시하게 해준다. 터미널을 꺼도 종료되지 않는다. 그러나 ctrl + c를 누르면 종료된다. (그냥 nohup만 사용했을 경우) nohup을 쓰게 되면 터미널을 끄더라도 하더라도 계속해서 돌아간다. tail -f nohup.out : 파일이 내용이 쓰여질 때마다 갱신하면서 보여짐 종료하기 ==> 프로세스를 죽인다. ps aux (현재 시스템에 띄워져 있는 프로세스 리스트를 보여준다. nohup을 붙여서 애플리케이션을 실행하더라도 뭔가 할 수 있는 것은 아니다. 다른 일을 하기 위해서는 프로세스를 백그라운드로 넘겨야 한다. 이 때는 맨 끝에 &(ampersand)만 붙이면..