프로젝트 생성 프로젝트는 IntelliJ ultimate에서 spring initialize로 생성해주었다. 먼저 백엔드 부분을 완성한 다음, frontend부분을 차차 완성할 예정이다. 프로젝트 세팅 프로젝트를 생성하면서, 로그인 부분을 먼저 만들어보기로 했다. Dependencies의 경우, 일단 필수적인 패키지와 로그인을 위한 security,jjwt,gson을 구성했고, 나머지 OAuth 같은 패키지는 필요에 따라 나중에 추가할 계획이다. # for Jwt Key, 32byte(256bit) 이상 jwt: secretKey: 12345678901234567890123456789012 refreshKey: 12345678901234567890123456789012 Jwt토큰 방식으로 로그인을 진행할..
개발동기 오늘부터 개인프로젝트를 시작한다. 현재 계속 Java와 스프링에 대해서 공부를 하고 있기는 하지만, 부분적인 퍼즐조각을 모으고만 있지 실제로 퍼즐조각을 모아서 퍼즐을 완성해본 적이 없다고 생각하게 되었다. 기술들을 머리로만 공부하게 되면 직접 사용하는데 점점 어려워질 것이라고 생각했다. 프로젝트에 주제에 대해서 곰곰히 생각해보고 있던 도중, 현대 사람들은 1인가구가 점점 늘어나면서 배달과 쇼핑을 하는 횟수가 점점 늘어나고 있다. 프로젝트를 완성하는데 내가 관심있는 결제 시스템까지도 구현할 수 있다고 생각해서 쇼핑몰 시스템을 Java와 스프링 부트를 통해 구현해보고자 한다. 흔해빠진 주제라고 생각하지만, 이런 주제에서 내가 구현하고자 하는 것들은 확실히 구현고 배울 점은 배우면서 내가 할 수 있는..
개요 이번에는 소규모 협업시 사용하는 팀프로젝트를 진행할 때, Git사용법에 대해서 간단히 정리해보겠습니다. 이번에는 팀장의 역할, 팀원의 역할 두가지로 나누어서 Git을 사용해보겠습니다. 프로젝트 시작시 팀장의 역할 프로젝트 생성 및 환경구축 팀프로젝트를 시작합니다. 팀장은 팀원을 위해서 repository를 생성해줍니다. 저는 위처럼 "git_practice_team_develope" 라는 repository를 연습용으로 생성해주었습니다. git clone {클론할 저장소 주소} git touch 환경설정.txt git add . git commit -m "환경설정 완료" git checkout -b dev git push --all 이후 팀장은 자신의 git 로컬 저장소에 해당 repository를..
개요 이때까지 한 내용을 정리하면, 회원가입을 한다.(DB에 저장) 로그인 시도하면, 각종 필터에서 검증하고, DB에서 해당 유저의 데이터를 이용해서 토큰을 생성해서 response해준다. 현재는 회원가입 이후 로그인시 토큰 생성까지는 됩니다. 이제 이 토큰을 이용해서 다른 링크에서 해당 유저가 로그인된 유저인지를 검증해서 정상적인 토큰이라면, 해당 페이지를 띄워줘야 합니다. 현재는 위처럼 Headers에 Authorization에 로그인시 발급받은 토큰을 같이 보내주면 permitAll된 페이지들에는 띄워지는데, admin같이 특정 권한이 필요한 곳에서는 띄워지지 않고 있습니다. 이를 위해서 스프링 시큐리티 filter chain에 요청이 담긴 JWT를 검증하기위해서 커스텀 필터를 등록해야 합니다. 필..
개요 로그인 로직은 다음과 같습니다. 1. /login으로 username, password를 받아서 POST요청이 들어옵니다. 2. UsernamePasswordAuthenticationFilter를 통해 로그인 요청을 받습니다. 사용자가 제공한 사용자 이름 및 비밀번호로부터 Authentication 객체를 생성하고, 이를 통해 AuthenticationManager로 전달합니다. 3. AthenticationManager에서는, UsernamePasswordAuthenticationFilter로부터 전달된 Authentication 객체를 처리하고, 실제로 사용자를 인증합니다. 4. UserDetailsService에서는 loadUserByUsername 메서드를 구현하여 사용자 이름을 기반으로 사..