분류 전체보기333 6) 인증 프로세스 - logout() ,RequestCache / SavedRequest 로그아웃• 스프링 시큐리티는 기본적으로 DefaultLogoutPageGeneratingFilter를 통해로그아웃 페이지를 제공하며 “ GET / logout ” URL 로 접근이 가능하다. • 로그아웃 실행은 기본적으로 “ POST / logout “ 으로만 가능하나CSRF 기능을 비활성화 할 경우 혹은 RequestMatcher 를 사용할 경우 GET, PUT, DELETE 모두 가능하다 • 로그아웃 필터를 거치지 않고 스프링 MVC 에서 커스텀 하게 구현할 수 있으며로그인 페이지가 커스텀하게 생성될 경우 로그아웃 기능도 커스텀하게 구현해야 한다 logout() API @EnableWebSecurity@Configurationpublic class SecurityConfig { @Bean .. 인프런/스프링 시큐리티 완전 정복 [6.x 개정판] 2024. 10. 11. 5) 인증프로세스 - BasicAuthenticationFilter , rememberMe() , RememberMeAuthenticationFilter, anonymous() BasicAuthenticationFilter • 이 필터는 기본 인증 서비스를 제공하는 데 사용된다 • BasicAuthenticationConverter 를 사용해서 요청 헤더에 기술된 인증정보의 유효성을 체크하며Base64 인코딩된 username 과 password 를 추출한다[유효성 체크 ==> Authentication이라는 헤더가 있는지, Basic이라는 인증기술이 적혀있는지 확인하는 절차 ] • 인증 이후 세션을 사용하는 경우와 사용하지 않는 경우에 따라 처리되는 흐름에 차이가 있다.세션을 사용하는 경우 매 요청 마다 인증과정을 거치지 않으나세션을 사용하지 않는 경우 매 요청마다 인증과정을 거쳐야 한다[ex) jwt같은] BasicAuthenticationFilter를 통해 유효성 체크를 .. 인프런/스프링 시큐리티 완전 정복 [6.x 개정판] 2024. 10. 10. 4) 인증프로세스 - 폼 인증,폼 인증 필터, HTTP Basic 인증 폼 인증 • HTTP 기반의 폼 로그인 인증 메커니즘을 활성화하는 API 로서사용자 인증을 위한 사용자 정의 로그인 페이지를 쉽게 구현할 수 있다 • 기본적으로 스프링 시큐리티가 제공하는 기본 로그인 페이지를 사용하며사용자 이름과 비밀번호 필드가 포함된 간단한 로그인 양식을 제공한다 • 사용자는 웹 폼을 통해 자격 증명(사용자 이름과 비밀번호)을 제공하고Spring Security는 HttpServletRequest에서 이 값을 읽어 온다 클라이언트가 아직 접근 인증을 받지 못했다면 접근 예외가 발생하고 예외 처리 필터로 인해 인증이 시작되면서 로그인 페이지로 리다이렉트 된다. formLogin() API[메소드를 API라고 칭하는 이유는 이 메서드들이 Spring Security의 내부 기능에 접.. 인프런/스프링 시큐리티 완전 정복 [6.x 개정판] 2024. 10. 8. 3) 초기화 과정이해 - DelegatingFilterProxy / FilterChainProxy , 사용자 정의 보안 설정하기 Filter• 서블릿 필터는 웹 애플리케이션에서 클라이언트의 요청과 서버의 응답을 가공하거나 검사하는데 사용되는 구성 요소이다 [ 클라이언트의 요청 -> ServletRequest [ HttpServletRequest ] , 서버의 응답 -> ServletResponse [ HttpServletResponse] ] • 서블릿 필터는 클라이언트의 요청이 서블릿에 도달하기 전이나 서블릿이 응답을 클라이언트에게 보내기 전에 특정 작업을 수행할 수 있다 • 서블릿 필터는 서블릿 컨테이너(WAS)에서 생성되고 실행되고 종료된다 DelegatingFilterProxy • DelegatingFilterProxy는 스프링에서 사용되는 특별한 서블릿 필터로,서블릿 컨테이너와 스프링 애플리케이션 컨텍스트 간의 연결고.. 인프런/스프링 시큐리티 완전 정복 [6.x 개정판] 2024. 10. 5. 2) 초기화 과정이해 - WebSecurity / HttpSecurity HttpSecurityHttpSecurityConfiguration에서 HttpSecurity를 생성하고 초기화를 진행한다 HttpSecurity는 보안에 필요한 각 설정 클래스와 필터들을 생성하고 최종적으로 SecurityFilterChain 빈 생성 HttpSecurityConfiguration를 통해 HttpSecurity를 수동빈 등록하는데 빈을 생성할때 설정을 진행하며Configurer가 만들어지고 최종적으로 HttpSecurity가 생성되면 Configurer안의 init, configure 메소드를 통해 필터들이 생성되고 등록된다. SecurityFilterChain - SecurityFilterChain는 하나가 아니라 여러개가 생성될 수 있다. public final class .. 인프런/스프링 시큐리티 완전 정복 [6.x 개정판] 2024. 10. 2. 1) 초기화 과정이해 - 프로젝트 설정, Spring Security 기본설정클래스, SecurityBuilder / SecurityConfigurer 프로젝트 설정 -Spring boot 3.3.4 버전- JDK 17 - Gradle dependencies { implementation 'org.springframework.boot:spring-boot-starter-security' }spring security 의존성 추가 Spring Boot Security 자동설정spring security 의존성을 추가하면 관련 라이브러리가 다운로드 되고 그중 자동 설정 클래스가 추가된다. SpringBootWebSecurityConfiguration@Configuration(proxyBeanMethods = false)@ConditionalOnWebApplication(type = Type.SERVLET)class SpringBootW.. 인프런/스프링 시큐리티 완전 정복 [6.x 개정판] 2024. 9. 30. 클린 아키텍처[ 레이어드 아키텍처,클린 아키텍처, 헥사고날 아키텍처 ] 레이어드 아키텍처로 생각하면소프트웨어 아키텍처란 아키텍처 : 어떤 대상의 구성과 동작 원리 , 구성 요소간의 관계 및 시스템 외부 환경과의 관계를 설명하는 하나의 설명서 ex) 시스템 아키텍처는 시스템이 전반적으로 어떻게 구성되어있는지, 각각의 요소들은 무엇이 있는지에 대해 설명한다.ex ) 소프트웨어 아키텍처 : 소프트웨어 구성요소들 사이 관계를 표현 레이어드 아키텍처관심사가 같은 코드들을 계층으로 그룹화 레이어드 아키텍처 특징1. 계층화로 인한 분리된 책임 2. 편의에 따라 여러 계층을 추가 가능하다Ex) presentation, application, domain, persistence 3. 구조가 쉽고 단순하고 익숙하다 4. 데이터베이스 주도 설계가 될 수 있다. 레이어드 아키텍처 흐름 상.. 공부 2024. 9. 27. jpa hibernate sql 로그 안보이는 문제 해결 jpa: hibernate: ddl-auto: create properties: hibernate: format_sql: truelogging: level: org.hibernate.SQL: debug org.hibernate.orm.jdbc.bind: trace jpa: properties: hibernate: show_sql: trueshow_sql은 System.out.println 처럼 콘솔출력이므로 사용하지않고 log로 찍는것이 좋다. logging: level: org.hibernate.SQL: debug이것으로 hibernate가 생성하는 쿼리 로그로 확인가능 org.hibernate.sql 로 적으면 안보인다... 문제해결 2024. 6. 19. 1) 라우터, 코드 스플린팅 [lazy,suspense] , <Link> , 레이아웃 컴포넌트,child ,모듈화와 라우팅 관리 코드 스플린팅코드 스플리팅파일을 분리하는 작업❗더 나은 사용자 경험을 위해 코드를 비동기적으로 로딩하는 방법예를 들어 페이지가 /main, /about, /post 이렇게 세 가지 페이지로 이루어진 SPA를 개발한다고 할 때/main으로 들어가는 동안 /about이나 /post 페이지 정보는 사용자에게 필요하지 않을 확률이 높다.💡 그러한 파일들을 분리하여 지금 사용자에게 필요한 파일만 불러올 수가 있다면 로딩도 빠르게 이루어지고 트래픽도 줄어 사용자 경험이 좋아질 수가 있다.지금 당장 필요한 코드가 아니면 따로 분리시켜서, 나중에 필요할 때 불러와서 사용할 수 있다.리액트에서 코드 스플리팅React.lazy💡 컴포넌트를 렌더링하는 시점에 비동기적으로 로딩할 수 있게 해주는 유틸 함수이다.Suspen.. 책/코드로 배우는 리액트 2024. 6. 19. 1) [미완] 프로젝트 환경설정 ,예제 도메인 모델, 기본문법 Querydsl 설정과 검증build.gradle//test 롬복 사용testCompileOnly 'org.projectlombok:lombok'testAnnotationProcessor 'org.projectlombok:lombok'//Querydsl 추가implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"annotationProcessor "jakarta.annotation:jakarta.annotation-api"annotationProcess.. 인프런/실전! Querydsl 2024. 6. 19. 끝) update, delete UPDATE 진행할 작업 update 기능 추가하기. contextControl = { event.preventDefault(); setMode('UPDATE');}}>Updateelse if (mode === 'UPDATE') { let topic = topics.find(p => p.id === id); // topic이 존재하는지 예외처리는 여기서 스킵 content = { // Update는 기존의 값을 볼 필요가 있으므로 Update 컴포넌트는 기존의값을 가지는 props를 가져야한다. // 그래야 컴포넌트를 실행할때 [렌더링할때] 해당 props를 사용하여 렌더링해줄수있기 떄문. //onUpdate에는 수정된 title,body를 이용하여 적용하.. 다른 온라인 강의/생활코딩- React 2022년 개정판 2024. 6. 18. 3) state, create State컴포넌트에서 Prop은 전달인자 return은 반환값이다.동적으로 컴포넌트의 내용을 바꾸기 위해서는 State를 이용한다.state의 값이 바뀌면 컴포넌트가 다시 실행되어서 return의 구성이 변경될수있고, 새롭게 렌더링 된다. + gptProp과 State에 대한 설명Prop (Properties)전달인자: Prop은 컴포넌트가 외부로부터 전달받는 데이터입니다. 부모 컴포넌트가 자식 컴포넌트에 데이터를 전달할 때 사용됩니다.불변성: Prop은 컴포넌트 내에서 변경할 수 없습니다. 자식 컴포넌트는 부모 컴포넌트로부터 전달받은 Prop을 읽기 전용으로 사용합니다.사용 예: 에서 title과 body가 Prop입니다.State내부 데이터: State는 컴포넌트가 관리하는 내부 데이터입니다. Sta.. 다른 온라인 강의/생활코딩- React 2022년 개정판 2024. 6. 18. 이전 1 2 3 4 5 6 7 ··· 28 다음