728x90 반응형 SMALL spring boot17 로그인 컴포넌트 현재 프론트엔드 애플리케이션은 백엔드에 http 요청을 보냈을 때 403이 리턴되면 로그인 페이지로 리디렉트 해야합니다. 또 로그인한 후 백엔드 서비스로 부터 받은 토큰을 어딘가에 저장해 놓고 요청을 보낼 때마다 헤더에 Bearer 토큰을 지정해줘야합니다. 그래서 첫번쨰로 로그인 페이지와 리디렉션 로직을 구현해야합니다. 그러기위해서 리액트-라우터-돔 라이브러리가 필요합니다. 2021.12.14 - React-router-dom 라이브러리가 필요한 이유 React-router-dom 라이브러리가 필요한 이유 React-router-dom 라이브러리가 필요한이유 이 라이브러리가 왜 필요한지 설명전에 우리에게 익숙한 형식의 웹 애플리케이션을 살펴 보겠습니다. 우리에게 익숙한 형식의 라우팅은 다음과 같습니다 u.. 2021. 12. 14. 패스워드 암호화 마지마긍로 패스워드를 암호화 해보겠습니다. 패스워드 암호화 부분은 스프링 시큐리티가 제공하는 BCryptPasswordEncoder의 사용을 위해 구현을 잠시 미뤄뒀었습니다. 우리가 UserController와 UserService 를 구현할 당시에는 스프링 시큐리티 디펜던시를 설정하지 않았었기 때문입니다. 이제 Userservice를 수정해줍니다. 기존의 getByCredentials 매서드를 수정해주어야합니다. public UserEntity getByCredentials(final String email, final String password, final PasswordEncoder passwordEncoder) { final UserEntity originalUser = userRepositor.. 2021. 12. 13. TodoController에서 인증된 사용자 사용하기 지난 글들을 작성할때 , Todo 리스트에 대한 CRUD 기능을 구현할때 고정적인 아이디를 사용했습니다! 이땐 로그인 기능이 구현되지 않았어서 고정적으로 사용했었습니다. 그리고 이 기능을 아직도 사용하고있었습니다. 이제 이 메서드들이 인증된 사용자 아이디를 사용할 수 있도록 각 메서드에 userid라는 매개변수를 추가해줍시다! 우선 최초 url 매핑을 담당하는 SO부분을 수정시켜줍시다. @AuthenticationPrincipal String userId 해당 어노테이션을 이용해서 로그인되어있는 권한을 가져오는겁니다. 그리고 컨트롤러 오브젝트 단에서도 아이디를 매개변수로 받아서 해당 아이디로 셋팅하게됩니다. 그런데말입니다... userId는 도대체 누가 어떻게 String 인것을 알고 넘겨주는 걸까요? .. 2021. 12. 12. 회원정보 찾기 스프링부트를 자습하면서 궁금한게 생겼었습니다!! 바로 간단한 정보로 기존에 저장되어있는 정보를 가지고 올순 없을까? 물론 가능합니다.!! 그러나 이걸 책이나 강의없이 구현할 수 있느냐, 얼마나 고민을 할수있느냐에 따라 내 기술이 되거나, 복붙러가 되거나 갈라진다고 생각이들었습니다..ㅠㅠㅠ 우선 계획을 세웠습니다. 이메일과 유저이름(패스워드의 경우 반대로)으로 회원정보를 몽땅 가져오자 SQL(리파지토리 단계)은 찾는다, 아이디와 유저이름을 통해 겟방식으로? 포스트방식으로? : 포스트방식으로 호출 입력값들을 UserDTO로 저장해서 처리된것도 UserDTO에 셋팅해서 간단하게 세웠습니다. package com.unoSpringBoot.study.persistence; import org.springframe.. 2021. 12. 10. 스프링 시큐리티 통합 -1 구현 내용 (시큐리티 통합 주제로) 1. JWT 인증 로직 구현 2. 패스워드 암호화 로직 구현 1. JWT 생성 및 반환 구현 사용자 정보를 바탕으로 헤더와 페이로드를 작성하고 전자 서명한 후 토큰을 리턴하도록 해야합니당 구현을 위해 JWT 관련 라이브러리를 디펜던시에 추가해야해요! build.gradle의 dependencies 부분에 jjwt 라이브러를 추가해줍시닷! // https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt implementation group: 'io.jsonwebtoken', name: 'jjwt', version: '0.9.1' 이제 보안을 제대로 구현하기위해 security 패키지를 만듭시다!! 이 패키즈는 인증과 인가를 위한 .. 2021. 12. 8. REST security를 구현해보자! 당분간 User 레이어를 구현할것입니다!!! UserEntity 를 구현한다. UserRepository 구현 UserService 구현 UserDTO/UserController 구현 사용자는 id, username, email, password로 로그인을하고 구성되어있습니다.! 그래서 해당 정보들이 들어가는 Entity를 구현해봅시다 package com.unoSpringBoot.study.model; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import org.hibernate.annotations.G.. 2021. 12. 2. 서비스통합(백엔드와 프론트엔드 통합하기) 서비스 통합 크로스오리진 리소스 셰어링 스프링 @Configuration 을 이용한 CORS 문제해결 fetch를 이용한 프론트엔드와 백엔드 통합 현재 저는 독립적으로 동작하는 백엔드 애플리케이션과 독립적으로 동작하는 프론트엔드 어플이 하나씩있습니다! 이제는 두 어플리케이션을 통합해 하나의 기능을 하는 웹 애플리케이션을 완성할 차례입니다! 이제는 프론트엔드에서 백엔드에 API를 요청하는 코드를 작성해보겠습니다 우리는 이제 JS의 fetch API를 이용해서 Todo 아이템 CRUD를 하게 할게요! 하지만 이때 CORS문제에 만닥뜨리게 된다. 이 문제는 보안과 관련되어 있어 백엔드에서 해결해 줘야합니다. 우리가 개발하는 애플리케이션을 통해 CORS가 무엇이고 이를 어떻게 해주어야할까요!? App컴포넌트에 .. 2021. 12. 1. 리액트로 간단한 컴포넌트 만들어보기 첫번째로 Todo 컴포넌트를 만들어볼것이다. 간단한 체크박스와 라벨을 랜더링하는 컴포넌트다. src디렉터리 아래에 Todo.js파일을 생성하자 저는 따로 js파일을들을 모아주기위한 js 폴더를 만들었어요! import React from 'react'; class Todo extends React.Component{ render(){ return ( Todo 컴포넌트 테스트 ); } } export default Todo; 현재 인덱스.js는 app컴포넌트가 렌더링 되고있다. 따라서 Todo컴포넌트를 화면에 출력하려면 App컴포넌트의 render함수에 Todo컴포넌트를 추가해야한다. import logo from './logo.svg'; import './App.css'; import Todo from .. 2021. 11. 30. 서비스 개발(4) - 삭제기능 Todo를 삭제하는 기능을 구현하고자합니당 퍼시스턴스 구현 TodoRepository를 사용한다. 업데이트를 위해 delete(), findByUserId()메서드를 사용한다. 서비스 구현 Delete기능의 구현을 위해 delete메서드를 작성하겠습니다! TodoService클래스에 해당 메서드를 추가해줍시다 public List deleteTodo(final TodoEntity entity) { Validate.checkValidate(entity); try { //엔티티를 삭제한다. todoRepository.delete(entity); } catch (Exception e) { //예외가 발생했을때 아이디와 예외를 로깅한다. log.error("에러발생!!엔티티 삭제할떄 오류가 발생..", enti.. 2021. 11. 28. 서비스 개발(3) - 업데이트 기능 지금의 포스팅은 Todo를 업데이트하는 리포지토리 서비스 컨트롤러 등을 구현한다. 그럼 제일 먼저할것은 서비스클래스에서 해당 기능을 해주는 update에 관련된 메서드를 만들어주는것이다. public List updateTodo(final TodoEntity entity) { // 저장할 엔티티가 유효한지 확인한다. Validate.checkValidate(entity); // 넘겨받은 엔티티 id를 이용해 Todo Entity를 가져온다. 존재하지 않은 엔티티는 업데이트 할 수 없기때문 final Optional original = todoRepository.findById(entity.getId()); original.ifPresent(todo -> { // 반환된 투두엔티티가 존재하면 값을 새 엔티.. 2021. 11. 28. 서비스 개발(2) - 전체리스트보기 이번에는 Todo리스트를 검색하는 리포지터리 서비스를 구현할것이다. Todo에 관한 서비스오브젝트를 관리하는 TodoSO에 위를 추가해준다 @Autowired TodoRetrieveTodoListCO todoRetrieveTodoListCO; @GetMapping public ResponseEntity retrieveTodoList() { return todoRetrieveTodoListCO.TodoRetrieveTodoList(); } 그리고 실제 동작을 할수있는 코드들이 있는 Controller오브젝트 TodoRetrieveTodo ListCO클래스를 만든다. package com.unoSpringBoot.study.Controller; import java.util.List; import java... 2021. 11. 28. 서비스 개발(1) - 글을 추가하는 기능 서비스 개발에 앞서 , 로깅 하는것을 간단하게 익히고가자, 로깅없이 디버깅하는 것은 코와 입을 막고 숨을 쉬는 것과 같다고한다. 시중에는 로그 라이브러리가 많이 나와있지만 그중 SL4J를 사용하겠다. package com.unoSpringBoot.study.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.unoSpringBoot.study.model.TodoEntity; import com.unoSpringBoot.study.persistence.TodoRepository; import lombok.extern.slf4j... 2021. 11. 26. 이전 1 2 다음 728x90 반응형 LIST