일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 목록처리
- 페이징
- 친절한SQL튜닝
- 처음 만나는 AI수학 with Python
- network configuration
- 자료구조와 함께 배우는 알고리즘 입문
- 알파회계
- resttemplate
- 티스토리 쿠키 삭제
- 리눅스
- /etc/network/interfaces
- 처음 만나는 AI 수학 with Python
- 이터레이터
- 코드로배우는스프링웹프로젝트
- 자바편
- iterator
- 코드로배우는스프링부트웹프로젝트
- 선형대수
- 데비안
- merge
- 스프링부트핵심가이드
- 네트워크 설정
- 구멍가게코딩단
- 병합
- 깃
- 스프링 시큐리티
- GIT
- 서버설정
- 자료구조와함께배우는알고리즘입문
- Kernighan의 C언어 프로그래밍
- Today
- Total
목록Projects (60)
bright jazz music
지난 포스팅에서는 jwt키를 application.yml에 넣어 놓고 불러와서 jwt암호화를 진행하는 과정을 다뤘다. 이번에는 회원 가입을 다룬다. 구체적으로는 아이디와 비밀번호를 입력 받고, 비밀번호를 암호화 해서 DB에 넣는 과정이다. - application.yml 수정(data.sql 입력 되지 않도록) 현재 어플리케이션을 구동하면 data.sql이 자동으로 DB에 입력되도록 되어 있다. 빈 DB 에 테스트 할 수 있도록 application.yml에서 sql 설정을 never로 변경해준다. 사실 이 과정은 오늘 진행할 내용과 관련 없다. 이제 기본적인 회원가입 기능을 만든다. 1. AuthController.java에 회원가입 메서드 생성하기 //AuthController.java //회원가입 ..
지난 번에는 application.yml에 정보를 넣어두고 그 정보를 AppConfig라는 클래스에 바인딩 시키는 과정을 실습하였다. yml의 문법을 사용하여 문자열, 숫자, 해쉬맵 뿐만 아니라 클래스 인스턴스에 바인딩하였다. yml에 정보 기재 AppConfig에 @ConfigurationProperties() +@Data 메인 클래스에 @EnableConfigurationProperties(바인딩 시킬 클래스) 이번에는 지난 번 포스팅의 내용을 참고하여 JWT를 생성하기 위한 key를 application.yml에 작성하고 그것을 AppConfig.java에 바인딩하여 사용하는 과정을 진행한다. private final String KEY = "Kz06PMZdP03FQVS3m8Jg9gKSEQjV4/N..
지난 번 포스팅에서는 jwt를 사용하여 암호화를 하고 그것을 세션으로 이용하는 내용을 다루었다. 따라서 UserController.java와 AuthResolver.java에 동일한 값의 특정 키를 가져와서 jwt를 암호화, 또는 복호화 하는 데 사용했다. AuthResolver.java에서는 복호화하는 데 사용했다. AuthController.java에서는 로그인을 하는 경우에 암호화 하였다. 세션의 경우 일반적으로는 모든 사용자가 같은 키를 사용하게 된다. 사용자별로 세션을 만들어 줄 때마다 키 값이 달라지는 경우 복호화 할 수 없기 때문이다. 키 값은 서버 어딘가에 위치해야만 한다. 지난 번 포스팅에서는 AuthController.java와 AuthResolver.java에 문자열 상수로 저장하였다..
1. 사용할 JWT 라이브러리 선택 JWT.IO JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties. jwt.io https://github.com/jwtk/jjwt GitHub - jwtk/jjwt: Java JWT: JSON Web Token for Java and Android Java JWT: JSON Web Token for Java and Android. Contribute to jwtk/jjwt development by creating an account on GitHub. github.com 가장 사용자가 많은 라이브러리를 사용한다. ..
지난 번 포스팅에서는 회원이 로그인을 하면 토큰이 발급되고, 인증이 필요한 페이지로 이동하려 할 때 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..