일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코드로배우는스프링부트웹프로젝트
- 코드로배우는스프링웹프로젝트
- 자바편
- 페이징
- network configuration
- 자료구조와함께배우는알고리즘입문
- iterator
- GIT
- 목록처리
- 처음 만나는 AI수학 with Python
- 네트워크 설정
- resttemplate
- 이터레이터
- 처음 만나는 AI 수학 with Python
- 알파회계
- 서버설정
- 자료구조와 함께 배우는 알고리즘 입문
- baeldung
- 스프링 시큐리티
- 리눅스
- Kernighan의 C언어 프로그래밍
- 티스토리 쿠키 삭제
- 스프링부트핵심가이드
- 친절한SQL튜닝
- 구멍가게코딩단
- d
- 선형대수
- /etc/network/interfaces
- 데비안
- ㅒ
- Today
- Total
목록Projects (57)
bright jazz music
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..
지난 포스팅에서는 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(..