목록분류 전체보기 (63)
종우의 삶 (전체 공개)
뜬금없지만 java에 대한 내용이다 우리가 자주쓰는 stream, map에 대한 이야기를 적어보려 한다. public String createToken(Authentication authentication) { String authorities = authentication.getAuthorities().stream() .map(GrantedAuthority::getAuthority) .collect(Collectors.joining(",")); long now = (new Date()).getTime(); Date validity = new Date(now + this.tokenExpirationTime); return Jwts.builder() .setSubject(authentication.getN..
단순 회원가입, 로그인보다 기능이 더 많은 프로젝트를 시작한다. + 주문, 주문 확인, 장바구니, 장바구니 확인 같은 세부 기능들이 추가되었다. 바로 이전에 진행했던 프로젝트를 토대로 작성해본다. 버전이 약간 다르므로 (JAVA 11, Spring boot 2.7.16) 차이가 있을 수 있으나 현재까지 다른 것은 느끼지 못했다. 하나의 궁금증이 생겼는데, 회원가입을 진행할 때 권한을 설정하는 부분이 있다. 서비스 코드를 살펴보자. public CustomerDto register(CustomerDto customerDto) { checkUserInfo(customerDto.getCustomerName(), customerDto.getEmail(), customerDto.getPhoneNumber()); ..
대상 Repository : https://github.com/Jonggae/security 코드에 대한 코멘트는 commentary 브랜치에서도 확인할 수 있습니다. https://github.com/Jonggae/security/tree/feature/6/commentary 참고자료: 인프런 Jwt 관련 영상 (github 코드 포함) https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-jwt 회원가입을 완료하였으므로 로그인을 진행해보자. 가장 어려웠던 부분이었으므로 자세히 정리해본다. ■ Spring Security에서 JWT를 이용한 로그인 ■ 1. 로그인 - JWT 기능 준비하기 기본적으로 Spring Sec..
대상 Repository : https://github.com/Jonggae/security 코드에 대한 코멘트는 commentary 브랜치에서도 확인할 수 있습니다. https://github.com/Jonggae/security/tree/feature/6/commentary 참고자료: 인프런 Jwt 관련 영상 (github 코드 포함) https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-jwt Security는 추상화가 아주 많이.. 되어있어 나같은 초보 개발자는 한번에 파악하기 힘들다. SpringSecurity 내의 클래스들을 확인하고, 어떻게 구현되는지 살펴볼 필요가 있을것이다. 쉽지는 않겠지만, 여러 정보들..
대상 Repository : https://github.com/Jonggae/security Security와 관련된 내용들을 연습한다. 목표 기능 1. H2 인메모리 DB를 이용한 회원가입 데이터의 저장 -> 사용자는 회원가입 과정에서 username, password, email을 입력하며, password는 암호화되어 DB저장 된다. 연습 프로젝트이므로 인메모리 데이터베이스를 이용하여 쉽게 휘발되는 데이터 저장을 진행한다. 2. 회원가입 후 로그인 -> 회원가입후 로그인을 하려면 인증에 필요한 토큰을 발급받아야 한다. Spring security를 이용하여 로그인 과정을 구현한다. username 과 password를 서버에 전송하면 DB내에서 올바른 정보인지 확인한 후, Jwt토큰을 발급한다. b..
로그인 구현 과정에서 진행이 잘 되지않으므로, 현재까지의 내용을 정리해보자. 1. Spring Security 의 전체 프로세스? 자주 봤던 그림이다. 스프링 시큐리티의 정확한 프로세스를 다시 한번 정리하고 막혔던 부분을 진행해보자. Spring에서 모든 호출은 DispatcherServlet을 통과하게 되고 이후에 각 요청을 담당하는 Contorller로 분배된다. https://mangkyu.tistory.com/18 (출처) [Spring] Dispatcher-Servlet(디스패처 서블릿)이란? 디스패처 서블릿의 개념과 동작 과정 이번에는 servlet의 심화 또는 대표주자인 dispatcher-servlet에 대해서 알아보도록 하겠습니다. 1. Dispatcher-Servlet(디스패처 서블릿)..
스프링 시큐리티 관련하여 이전과 달라진 부분들을 정리해본다. 약 6개월 전만 하더라도 이렇게 쓰는 방식이 아니었던 것 같은데, 최신 스프링 시큐리티에서는 많은 부분들을 람다형태로 바꾸는 방법을 채택한 것 같다. 예를들어 h2-console에 접속하기 위해서 h2-console 경로를 허가해주고 .requestMatchers("/h2-console/**").permitAll() 잘 표시되지 않는 부분들을 xframe 옵션을 사용하지 않음으로 바꾸어야하는데 기존의 스프링은 http.headers() .frameOptions().disable(); 이렇게 진행을 했다면 (아마 많이 보았을 것이다) 같은 기능을 수행하기 위해 http.headers( headers -> headers.frameOptions(He..
대상 Repository : https://github.com/Jonggae/security Security와 관련된 내용들을 연습한다. 1편에 이어 회원가입 기능에 대한 테스트코드를 작성해본다. 여기서 수많은 난관에 봉착한다. 아직 진행중이기에 결론은 나지 않았지만 어쨌든 테스트코드의 목적은 테스트를 하는 것이기에.. 수많은 시행착오를 거쳐 아주 간단한 형태의 테스트코드가 남게 되었다. 그러나 package com.example.securitydemo.user.service; import com.example.securitydemo.user.domain.User; import com.example.securitydemo.user.dto.RegisterRequestDto; import com.exampl..