분류 전체보기

    [스프링 시큐리티] 사용자 관리 UserDetails, UserDetailsService, UserDetailsManager

    사용자 관리 스프링 시큐리티에서 사용자를 기술하는 UserDetails 사용자가 실행할 수 있는 작업을 정의하는 GrantedAuthority UserDetailsService 계약을 확장하는 UserDetailsManager. 상속된 동작 외에 사용자 만들기. 사용자의 암호 수정이나 삭제 등의 작업도 지원한다. 사용자 관리를 위해서는 UserDetailsService 및 UserDetailsManager 인터페이스를 이용한다. UserDetailsService는 사용자 이름으로 사용자를 검색하는 역할만 한다. 이 작업은 프레임워크가 인증을 완료하는 데 반드시 필요한 유일한 작업이다. UserDetailsManager 는 대부분의 애플리케이션에 필요한 사웅자 추가, 수정, 삭제 작업을 추가한다. 개발자는..

    [스프링 시큐리티] 스프링 시큐리티의 흐름

    Redis Template Redis 데이터 액세스 코드를 단순화하는 도우미 클래스로, Redis 저장소에서 지정된 개체와 기본 이진 데이터 간에 자동 직렬화/역직렬화를 수행한다. >> 기본적으로 객체에 대해 Java 직렬화를 사용한다. >> 스레드로부터 안전하다. Rest Template (Spring Framework 5부터 Spring은 WebClient 라는 새로운 HTTP 클라이언트를 도입했습니다 .새 애플리케이션을 개발하거나 이전 애플리케이션을 마이그레이션하는 경우 WebClient 를 사용하는 것이 좋습니다 . 앞으로 RestTemplate 은 향후 버전에서 더 이상 사용되지 않습니다.) 정보는 왔다 갔다 하되 서버 사이드에서만 처리가 되게.... 스프링 시큐리티의 인증 흐름. > Authe..

    [Database] User table, Post table relation & Cardinality

    고민하는 글! //user가 없는 포스트는 없다 //post가 없는 유저는 있다 //한쪽이 0이 될 수 있는가 //글 주인의 카디널리티(원소의 수)가 0이 될 수 있는가 모든 포스트는 유저를 가지고 있어야 한다. 포스트가 없는 유저는 있다. 원소의 수가 0이 될 수 있는가?....??? 포스트 테이블의 정의가 있어도 거기에 엔터티 튜플 값이 없을 수 있다. 그게 없더라도 어플리케이션의 모든 것이 문제가 없이 작동한다. 유저 없이는 포스트를 넣을 수 없다. 유저 입장에서 봤을 때 포스트 필드가 있고 유저가 쓴 포스트가 0개라고 올수 있음. 유저는 그런 식으로 만들어낼 수 있음 포스트는 유저에 소속된다. 의존성! 특정 유저에 디펜던시가 있는거다. 누가 중심이 되느냐가 핵심! 생각해볼만한 문제 A beginn..

    NHN mart

    1. public enum InquiryCategory >> ENUM의 요소 하나하나는 필드가 아니고 인스턴스다. 그 뒤에 괄호가 붙으면 생성자라는 의미 ENUM 필드를 만들고 생성자에서 설정해주기 2. html에서 드롭박스로 enum 바로 받기 i는 foreach에 i 같은거라 T로 하면 뭐든 다 받을 수 있다. The T operator is part of the Spring Expression Language for specifying an instance of a class or accessing static methods.

    Request Method 반환 값 & score 3일차 과제 메모

    9 HTTP methods and how to use them HTTP protocol works by clients sending requests to the servers and servers responding to the requests. We do CRUD operations (Create, Read, Update, Delete) by sending HTTP requests with different HTTP methods, sometimes called HTTP verbs. testfully.io Which HTTP Status Code to Use for Every CRUD App How to use best use the correct HTTP status code in API design..

    [DB] 트랜잭션 Transaction

    트랜잭션이란 무엇인가? 데이터베이스 관리 시스템에서 사용자 프로그램의 실행 단위 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위 관련 작업을 모두 완벽하게 처리하거나, 처리하지 못하는 경우 원 상태로 복구해서 작업의 일부만 적용되는 현상이 발생하지 않게 만들어주는 기능으로 작업의 완전성을 보장한다. 데이터베이스 관리 시스템에 요구되는 동시 접근 제어와 복구에 관련된 문제를 해결하기 위해서 데이터베이스 관리 시스템은 트랜잭션을 구현해야 한다. 트랜잭션은 ACID라고 불리는 다음의 성질을 만족해야 한다 트랜잭션의 특징 원자성 관련 작업이 전부 처리되거나 아예 처리되지 않아야 함. 중간에..

    [DB] 정규화에 대해서

    정규화란 무엇인가 관계형 데이터 베이스 설계에서 중복을 최소화하고 데이터를 구조화하는 프로세스를 뜻한다. 데이터가 중복으로 저장된다 - 디스크 공간 낭비 - 비정상적인 삽입 갱신 삭제 처리 - 일관되지 않은 데이터 문제가 생긴다. 기본 목표: 테이블 간에 중복된 데이터를 허용하지 않는다. - 불필요한 데이터를 제거, 데이터의 중복을 최소화 - 데이터 베이스 구조 확장 시 재디자인을 최소화 - 이상 현상 방지 중복된 데이터를 허용하지 않음으로써 이상 현상을 없애는 과정 정규화는 어떤 배경에서 생겨났는가 한 릴레이션에 여러 속성의 값들을 혼합하면 정보가 중복 저장되어 이상 현상이 발생한다. 이상 현상이란, 테이블 내의 중복성에 의해서 발생되는 데이터 불일치 현상을 의미한다. 갱신 이상: 어떤 값을 업데이트 ..

    [DB] Index란 무엇인가? Index 자료구조와 성능

    인덱스(Index)란 무엇인가? 💡인덱스는 데이터 베이스 테이블 검색 성능의 속도를 높여주는 자료 구조이다. 인덱스는 테이블 내의 1개의 컬럼, 혹은 여러 개의 컬럼을 이용하여 생성될 수 있다. 고속의 검색 동작뿐만 아니라 레코드 접근과 관련 효율적인 순서 매김 동작에 대한 기초를 제공한다. 특정 컬럼에 인덱스를 생성하면, 해당 컬럼의 데이터들을 정렬하여 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장된다. 인덱스를 생성한 후에 쿼리문에 인덱스 생성 컬럼을 WHERE 조건으로 거는 등의 작업을 하면 옵티마이저에서 판단하여 생성된 인덱스를 타고 인덱스에 저장되어 있는 데이터의 물리적 주소로 가서 데이터를 가져온다. 예를 들자면, 인덱스는 책에 있는 목차와 같다. 원하는 부분을 찾기 위해 목차에 있는..

    [DB] 데이터 베이스를 사용하는 이유, 데이터 베이스의 성능

    파일 처리 시스템 데이터 베이스 등장 이전에 파일 처리 시스템을 이용해서 데이터를 관리하였다. 파일 처리 시스템은 각각의 파일 단위로 데이터를 저장하는데, 파일에 접근하는 방식이 응용 프로그램 내에 표현되므로 응용 프로그램과 데이터 간의 의존 관계가 존재하게 되어 데이터 구조 및 접근 방법이 변경되면 기존의 프로그램과 데이터를 함께 변경해야 한다. >> 데이터의 정의가 응용 프로그램에 내포되어 있고, 프로그램에서 직접적으로 데이터에 접근하고 조작하는 것 이외에 별도의 제어가 없기 때문에 데이터 종속성, 중복성 문제가 발생한다. 데이터 종속성 응용 프로그램과 데이터의 상호 의존 관계로 인해 파일 구조나 접근 방법이 변경되면 응용 프로그램도 함께 변경해야 한다 데이터의 중복성 한 시스템 내의 데이터가 중복 ..

    [개발환경] Git 기초 사용법

    👉fork는 완전히 다른 형태로 진행하고 싶을 때. 연관성을 띌 수도 있다. 포킹해서 가져와서 정책이나 기능을 이어가는 별도의 프로젝트를 만들겠다는 의지. clone은 정책이나 기능을 이어가는게 아니라 그냥 똑같은 사본을 하나 더 만드는 것!! 있는거를 복제해서 쓰는 것. 기존 프로젝트를 벗어나지 않는다. 저장소 생성, 복제, 파일의 상태와 커밋 커밋: 파일의 변경사항을 깃 저장소의 히스토리의 하나로써 저장하는 걸 말한다. Gitignore 빌드 결과물 혹은 임시 파일 등은 굳이 버전관리를 할 필요가 없다. .gitignore라는 텍스트 파일을 만들어서 한줄씩 무시할 파일 이름의 패턴을 적어주면 된다. https://www.toptal.com/developers/gitignore/ gitignore.io..