spring 18

스프링 시큐리티 JWT 간단 정리 -2

8. DB기반 로그인 검증 로직로그인 요청이 POST 경로로 넘어오면 시큐리티 필터에서 body에 있는 username과 password를 꺼내서 검증하는토큰 객체를 만들고, 그 객체를 Manager한테 넘겨주는 과정을 진행하였음 여태까지.실행을 하면 로그인을 검증하는 뒷부분이 완성이 안되어서 오류가 발생했었다 그래서 이제는 뒷부분을 구현할 예정~  UserRepository  UserRepository에 해당 유저를 조회하는 쿼리를 만들 것이다 리턴타입은 엔티티를 리턴하고 쿼리는 findByUsername내부 인자는 username으로 작성하면 됨이제 UserDetailsService에서 위 메서드를 통해서 특정 유저를 조회할 수 있게 되었다  UserDetailsService 커스텀 구현 우리가 커스..

spring 2024.09.06

스프링 시큐리티 JWT 간단 정리 -1

1. 간단한 동작 원리  - 구현 -인증 : 로그인인가 : JWT를 통한 경로별 접근 권한회원가입   회원가입: 세션 방식과 차이가 없음API 서버라서 POST 요청을 보내고 JOINCONTROLLER에서 요청을 받고 JOINSERVICE에서 처리 진행하고 USERENTITY에 담아서 REPOSITORY로 데이터베이스에 집어 넣는다 로그인:로그인 경로로 요청이 오면 1. USERNAME 어쩌구 필터를 통해 회원 검증을 한다MANAGER로 아이디 비밀번호를 던지고 내부적으로 로그인 검증을 한다로그인 성공하면 세션과 다르게 JWT는 세션에다가 회원정보를 남기지 않고 메서드를 통해JWT UTIL에서 토큰을 만들어서 응답해줌 경로 접근(인가):토큰을 헤더에 넣어서 요청을 진행해야 한다 특정 경로로 요청이 오면필..

spring 2024.08.30

[스프링 교과서] 스프링 컨텍스트: 빈 정의

스프링은 컨텍스트 안의 인스턴스를 사용해서 앱이 제공하는 다양한 기능에 앱을 연결한다컨텍스트는 사용자가 정의한 인스턴스를 스프링이 제어할 수 있게 해주는 복잡한 메커니즘이다. 2.1 메이븐 프로젝트 생성이 책에서는 아파치 메이븐 Apache Maven 프로젝트로 생성한다메이븐은 앱의 빌드 프로세스를 쉽게 관리할 수 있는 도구임빌드에 자주 포함되는 작업은 아래와 같다- 앱에 필요한 의존성 내려받기- 테스트 실행- 구문이 정의한 규칙 준수 여부 검증- 보안 취약점 확인- 앱 컴파일- 실행 가능한 아카이브에 앱 패키징   src 폴더 : 소스 폴더, 앱에 속한 모든 것을 넣을 수 있음ㄴ main 폴더 : 애플리케이션 소스 코드 저장ㄴ test 폴더 : 단위 테스트의 소스 코드 저장pom.xml 파일 : 새 종..

spring 2024.08.23

[스프링 교과서] 기초

1.1 마이크로서비스 아키텍처로 진화애플리케이션 프레임워크란, 애플리케이션을 개발을 위한 기본 구조를 제공하는 소프트웨어 기능의 집합.그래서 프레임워크의 모든 기능을 사용할 필요 없음. 적절하게 기능을 선택해서 사용하면 됨프레임워크의 선택과 사용은 애플리케이션의 설계 및 아키텍처와 연결됨 1.2 스프링 생태계스프링은 단순한 프레임워크는 아니고, 여러 프레임워크의 생태계다  1. 스프링 코어기본 기능을 포함하는 스프링의 기반. 스프링 컨텍스트(앱의 인스턴스를 관리할 수 있게함), 스프링 애스펙트(앱에서 정의한 메서드를 가로채고 조작함), 스프링 표현언어(특정 언어로 스프링 구성내용 작성 가능) 2. 스프링 모델-뷰-컨트롤러 (MVC)HTTP 요청 처리하는 웹 애플리케이션 개발 가능  3. 스프링 데이터 액..

spring 2024.08.23

[Spring MVC 1편] 웹 페이지 만들기

프로젝트 시작 전 설정 요구사항 분석 상품 도메인 모델- 상품 ID- 상표명- 가격- 수량 상품 관리 기능- 상품 목록- 상품 상세- 상품 등록- 상품 수정  MVC를 사용하고 있으므로 항상 컨트롤러를 통해 뷰가 호출된다상품 수정폼을 눌러서 수정하기 누르면 상품 상세로 리다이렉트한다  업무 진행디자이너 : 디자인 결과물을 웹 퍼블리셔에게 넘겨준다웹 퍼블리셔 : 디자이너에게 받은 디자인을 기반으로 HTML, CSS를 만들어 개발자에게 제공백엔드 개발자 :  디자이너, 웹 퍼블리셔를 통해 HTML 화면이 나오기 전까지 시스템과 핵심 비즈니스 모델 설계이후 HTML이 나오면 이 HTML을 뷰 템플릿으로 변환해서 동적으로 화면 제어 그리고 웹 화면의 흐름 제어 위 진행 방식은 프론트엔드 개발자가 없는 경우의 업..

spring 2024.08.12

[Spring MVC 1편] 스프링 MVC - 기본 기능

프로젝트 생성https://start.spring.io SNAPSHOT은 정식 release가 아니다이제 JSP를 쓰지 않고 타임리프 템플릿을 쓸 것패키징을 Jar로 선택하는 것은 별도의 톰캣 서버에 설치하는 것이 아니고 그냥 내장 톰캣으로 바로 돌리기 위해서다  enable 체크하기 스프링부트에 Jar 사용시 /resourcs/static/index.html 위치에 index.html 파일을 두면 웰컴 페이지로 처리해준다 로깅 간단히 알아보기 운영시스템에서는 println()과 같은 시스템 콘솔을 사용해서 정보를 출력하지 않고, 별도의 로깅 라이브러리로 로그를 출력한다 로깅 라이브러리 스프링 부트 라이브러리를 사용하면, 스프링 부트 로깅 라이브러리 spring-boot-starter-logging 이 ..

spring 2024.08.10

[Spring MVC 1편] 스프링 MVC- 구조 이해

스프링 MVC 전체 구조    기존 코드와 SpringMVC를 비교해보면 구조가 똑같고 이름에 차이가 있다.직접 만든 프레임워크 스프링 MVCFrontControllerDispatcherServlethandlerMappingMapHandlerMappingMyHandlerAdapterHandlerAdapterModelViewModelAndViewviewResolverViewResolverMyViewView 스프링에서는 viewResolver를 인터페이스로 만들어놨다그리고 스프링MVC에서는 컨트롤러가 바로 DispatcherServlet이다.DispatcherServlet도 HttpServlet을 상속받아서 사용하고 서블릿으로 동작한다. 스프링 부트는 DispatcherServlet을 서블릿으로 자동 등록하..

spring 2024.08.09

[Spring MVC 1편] MVC 프레임워크 만들기

프론트 컨트롤러 패턴 소개프론트 컨트롤러 도입전에는, 공통로직이 필요하면 각각 공통로직을 깔고 별도의 로직을 또 깔았다프론트 컨트롤러를 도입하면 공통로직을 거기에 몰고 별도의 로직을 따로 깐다.즉 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받고, 요청에 맞는 컨트롤러를 찾아서 호출한다입구를 하나로 만들어서 공통 처리가 가능하게 만든 것이다. 프론트 컨트롤러 도입 -v1클라이언트가 http 요청을 하면 서블릿인 Front Controller가 요청을 받는다.매핑 정보를 가지고 컨트롤러를 호출한다. hello/servlet/web/frontcontroller/v1/ControllerV1.interface서블릿과 비슷한 모양의 컨트롤러 인터페이스를 도입한다. 각 컨트롤러들은 이 인터페이스를 구현하면 된..

spring 2024.08.08

[Spring MVC 1편] 서블릿, JSP, MVC 패턴

회원 관리 웹 애플리케이션 요구사항서블릿으로 만들고, 서블릿을 개선한 JSP로 만들고, JSP를 개선한 MVC 패턴으로 만들어볼 것이다.회원정보이름 'username'나이 'age'기능 요구사항회원 저장회원 목록 조회 hello/servlet/domain/member/Member.classid, username, age 필드 선언한다. id의 경우, 데이터베이스에 저장하면 발급이 된다. hello/servlet/domain/member/MemberRepository.class여기서 repository란 엔티티에 의해 생성된 데이터베이스 테이블에 접근하는 메서드들을 사용하기 위한 인터페이스이다1. save2. findById3. findAllreturn new ArrayList(store.values));..

spring 2024.08.07

[Spring MVC 1편] 서블릿

* Packaging을 Jar가 아닌 War로 쓰는 이유: JSP 이용을 위해  HTTP 요청을 통해 매핑된 URL이 호출되면 서블릿 컨테이너는 service 메서드를 실행한다서블릿 HTTP 요청이 오면 WAS가 그니까 서블릿 컨테이너가 REQUEST, RESPONSE 객체를 만들어서 서블릿에 던져준다 request.getParameter로 쿼리파라미터를 받는다response에 값을 넣으면 웹 브라우저에 응답하는 response http 응답 메세지에 담겨서 나가게 된다  스프링부트를 실행하면, 내장 톰캣 서버를 띄어준다.톰캣 서버는 내부에 서블릿 컨테이너를 가지고 있어서 서블릿을 생성해준다. 서버는 request response 객체를 만들어서 helloservlet을 호출해주고 필요한 작업을 하고 종..

spring 2024.07.31