본문 바로가기

전체 글

(894)
[스프링 부트 3 백엔드 개발자 되기] ch 9. JWT로 로그인/로그아웃 구현하기 1. 토큰 기반 인증  - 사용자가 서버에 접근할 때 이 사용자가 인증된 사용자인지 확인하는 방법은 서버 기반 인증과 토큰 기반 인증이 있다. - 스프링 시큐리티에서는 기본적으로 세션 기반 인증을 제공해준다. - 토큰 기반 인증은 토큰을 사용하는 방법이다. - 토큰은 서버에서 클라이언트를 구분하기 위한 유일한 값인데 서버가 토큰을 생성해서 클라이언트에게 제공하면, 클라이언트는 이 토큰을 갖고 있다가 여러 요청을 이 토큰과 함께 신청한다. 그럼 서버는 토큰만 보고 유효한 사용자인지 검증한다.  토큰을 전달하고 인증받는 과정   1)- 클라이언트가 아이디와 비밀번호를 서버에게 전달하면서 인증을 요청 2)- 서버는 아이디와 비밀번호를 확인해 유효한 사용자인지 검증- 유효한 사용자면 토큰을 생성해서 응답  3)..
[스프링 부트 3 백엔드 개발자 되기] ch 8. 스프링 시큐리티로 로그인/로그아웃, 회원가입 구현하기 1. 스프링 시큐리티 스프링 시큐리티(spring security)- 스프링 기반의 애플리케이션 보안(인증,인가,권한)을 담당하는 스프링 하위 프레임워크 - 스프링 기반 애플리케이션의 보안을 담당하는 스프링 하위 프레임워크 - CSRF 공격, 세션 고정(session flxation) 공격을 방어해주고, 요청 헤더도 보안처리를 해주므로 개발자가 보안 관련 개발을 해야 하는 부담을 크게 줄여줌 인증과 인가  인증(authentication)- 사용자의 신원을 입증하는 과정 인가(authorization)- 사이트의 특정 부분에 접근할 수 있는지 권한을 확인하는 작업   필터 기반으로 동작하는 스프링 시큐리티  - 스프링 시큐리티는 다양한 필터들로 나누어져 있으며, 각 필터에서 인증,인가와 관련된 작업을 처..
[스프링 부트 3 백엔드 개발자 되기] ch 7. 블로그 화면 구성하기 1. 타임리프  1) 템플릿 엔진 개념 - 스프링 서버에서 데이터를 받아 우리가 보는 웹 페이지, 즉 HTML 상에 그 데이터를 넣어 보여주는 도구 ex) - h1 태그에는 ${이름}이 text 어트리뷰트로 할당되어 있고, p 태그에는 ${나이}가 text 어트리뷰트로 할당되어 있다.- 이렇게 해두면 서버에서 이름,나이라는 키로 데이터를 템플릿 엔진에 넘겨주고 템플릿 엔진은 이를 받아 HTML에 값을 적용한다.  ex) 서버에서 보여준 데이터 예{ 이름:"홍길동" 나이:11} - 값이 달라지면 그때그때 화면에 반영하여 동적인 웹 페이지를 만들 수 있다. - 대표적인 템플릿 엔진으로는 JSP, 타임리프, 프리마커 등이 있다.   타임리프 표현식과 문법  - 표현식은 전달받은 데이터를 사용자들이 ..
[스프링 부트 3 백엔드 개발자 되기] ch 6. 블로그 기획하고 API 만들기 1. API와 REST API API- 프로그램 간에 상호작용하기 위한 매개체 - 클라이언트의 요청을 서버에 잘 전달하고, 서버의 결과물을 클라이언트에 잘 돌려주는 역할 REST API- Representational State Transfer- 웹의 장점을 최대한 활용하는 API- 자원을 이름으로 구분해 자원의 상태를 주고받는 API 방식-  URL 설계 방식 -  주소와 메서드만 보고 요청의 내용을 파악할 수 있다.  1) 특징 - 서버/클라이언트 구조, 무상태, 캐시 처리 기능, 계층화, 인터페이스 일관성  2) REST API를 사용하는 방법  규칙 1. URL에는 동사를 쓰지말고, 자원을 표시해야 한다.   자원 = 가져오는 데이터 예문적합성설명/articles/1적합동사 없음, 1번 글을 가져..
[글로컬청년취업사관학교][TIL] 240712 메뉴판(부제 : 맛집 리스트) 요구사항- 음식의 이름,설명,가격이 포함된 메뉴판 만들기- 카테고리 버튼을 두고 선택시에 해당 카테고리의 음식만 보여주기  index.html Our Menu   app.jsconst menu = [ { id: 1, title: "buttermilk pancakes", category: "breakfast", price: 15.99, img: "./images/menu1.jpeg", desc: `I'm baby woke mlkshk wolf bitters live-edge blue bottle, hammock free..
[스프링 부트 3 백엔드 개발자 되기] ch 5. 데이터베이스 조작이 편해지는 ORM 1. 데이터베이스란? - 데이터베이스를 관리하기 위한 소프트웨어를 DBMS(database management system)라고 한다. - DBMS는 관리 특징에 따라서 관계형, 객체-관계형, 도큐먼트형, 비관계형 등으로 구분한다.  관계형 DBMS - relational DBMS를 줄여서 REBMS라고 부른다. 테이블 형태로 이루어진 데이터 저장소 H2, MySQL - 개발 및 테스트시에는 H2, 실제 서비스를 올릴 때는 MySQL를 사용 - H2는 자바로 작성되어 있는 RDBMS이다. 스프링 부트가 지원하는 인메모리 관계형 데이터베이스이다. 데이터를 다른 공간에 따로 보관하는 것이 아니라 애플리케이션 자체 내부에 데이터를 저장하는 특징이 있다.  SQL문으로 데이터베이스 조작  ● 데이터 조회SELE..
[스프링 부트 3 백엔드 개발자 되기] ch 4. 스프링 부트 3과 테스트 1. 테스트 코드 개념 익히기  1) 테스트 코드 - 테스트 코드는 작성한 코드가 의도대로 잘 동작하고 예상치 못한 문제가 없는지 확인할 목적으로 작성하는 코드- test 디렉터리에서 작업한다.  given-when-then 패턴 - given은 테스트 실행을 준비하는 단계 - when은 테스트를 진행하는 단계 - then은 테스트 결과를 검증하는 단계  ex) 새로운 메뉴를 저장하는 코드를 테스트 @DisplayName("새로운 메뉴를 저장한다.")@Testpublic void saveMenuTest() { //given : 메뉴를 저장하기 위한 준비 과정 final String name = "아메리카노"; final int price = 2000; final Menu americ..
[스프링 부트 3 백엔드 개발자 되기] ch 3. 스프링 부트 3 구조 이해하기 1. 스프링 부트 3 구조 살펴보기  - 스프링 부트는 각 계층이 양 옆의 계층과 통신하는 구조를 따른다. - 각 계층은 서로 소통할 수는 있지만 다른 계층에 직접 간섭하거나 영향을 미치지 않는다.   - 스프링 부트에는 프레젠테이션, 비즈닛, 퍼시스턴스 계층이 있다. 이 계층이 통신하며 프로그램을 구성한다.  1) 프레젠테이션 계층  - HTTP 요청을 받고 이 요청을 비즈니스 계층으로 전송하는 역할을 한다. 컨트롤러가 바로 프레젠테이션 계층 역할을 한다. 2) 비즈니스 계층  - 모든 비즈니스 로직을 처리한다. 비즈니스 로직이란 서비스를 만들기 위한 로직을 말한다. 서비스가 비즈니스 계층 역할을 한다.  3) 퍼시스턴스 계층  - 모든 데이터베이스 관련 로직을 처리한다. 이 과정에서 데이터베이스에 접..