일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 달팽이
- 게이트웨이
- ZuulFilter
- 구간 트리
- Zuul
- 메모이제이션
- Java
- 이분 탐색
- 도커
- BFS
- 서비스 디스커버리
- 완전 탐색
- Spring Cloud Config
- 이분 매칭
- Gradle
- Logback
- spring boot
- 스프링 시큐리티
- 플로이드 와샬
- 비트마스킹
- 백트래킹
- 유레카
- 다익스트라
- 스택
- dp
- spring cloud
- 구현
- 트리
- docker-compose
- 주울
- Today
- Total
목록Spring boot (19)
Hello, Freakin world!
프로젝트에서 스프링 시큐리티를 사용하는 경우, WebSecurityConfigurerAdapter 상속 클래스에서 CORS 설정을 추가해야 합니다. @EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { ... @Override protected void configure(HttpSecurity http) throws Exception { http .csrf().disable() .cors().configurationSource(corsConfigurationSource()).and() .authorizeRequests() .antMatchers("/login/**", "/hello/**").permi..
간단하게 몇 개의 url 접근에 필요한 권한을 설정하고 mock 테스트를 작성해보자. 아래와 같이 url 권한을 설정, 요청에 csrf 토큰을 추가하도록 설정했다. csrf 설정을 하게 되면 위험할 수 있는 요청(POST, DELETE, PUT)의 경우 반드시 csrf 토큰을 요청에 포함해야 된다. WebSecurityConfig import org.springframework.http.HttpMethod; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.bu..
시나리오 - 인증 기능을 구현한다. - 로그인 화면에서 인증 요청을 받는다. - 인증 요청 정보를 Member 데이터베이스에 저장된 정보와 대조해 인증한다. 1. 로그인 화면 스프링 시큐리티에 form 로그인 방식 설정을 해두면 위와 같이 동작합니다. 보호된 자원에 접근하는 경우, AccessDeniedException이 발생합니다. ( 폼 로그인 설정이 없을 경우 단순하게 403 Forbidden 에러 페이지를 보여줍니다.) SecurityFilterChain에 등록되어 있는 예외처리 필터에서 AccessDeniedException을 캐치해 로그인 화면으로 클라이언트를 리다이렉트 시킵니다. form 로그인을 설정하는 코드는 아래와 같습니다. ... @EnableWebSecurity public clas..
... public class TestPasswordEncoder { @Test public void delegatingPasswordEncodingTest() { //given String givenPassword = "hello"; //when PasswordEncoder passwordEncoder = PasswordEncoderFactories.createDelegatingPasswordEncoder(); String encodedPassword = passwordEncoder.encode(givenPassword); //then assertThat(passwordEncoder.matches(givenPassword, encodedPassword)).isTrue() ; } @Test public ..
도커를 이용해 위 그림처럼 동일한 인스턴스로 구성된 클러스터를 만들어보자. 우선 서비스를 만들기 위해 스프링 이니셜라이저를 이용해 프로젝트를 생성. build.gradle plugins { id 'org.springframework.boot' version '2.4.3' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } group = 'springboot.study' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spr..
다음의 컨트롤러 계층의 메서드가 있다고 가정합니다. @ToString @NoArgsConstructor @Getter public class ItemCreateDto { @NotNull private String name; @NotNull private Integer price; @NotNull private Integer stockQuantity; private List details; } @PostMapping("/items") public String create(@RequestBody ItemCreateDto createDto) { System.out.println(createDto); return "created"; } 웹 POST 요청 바디의 JSON객체가 ItemCreateDto에 제대로 바..
참고 : https://docs.spring.io/spring/docs/4.3.15.RELEASE/spring-framework-reference/html/aop.html#writing-good-pointcuts 11. Aspect Oriented Programming with Spring Aspect-Oriented Programming (AOP) complements Object-Oriented Programming (OOP) by providing another way of thinking about program structure. The key unit of modularity in OOP is the class, whereas in AOP the unit of modularity is the ..
거두절미하고 바로 예제로 고고! 우선 Person 도메인 클래스를 정의합니다. package com.aop.validationexam; import lombok.Getter; import lombok.RequiredArgsConstructor; import lombok.ToString; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; @Getter @ToString @RequiredArgsConstructor public class Person { @NotNull(message = "name is null") private final String name; @Min(1) private final in..
참고 : https://docs.spring.io/spring/docs/4.3.15.RELEASE/spring-framework-reference/html/aop.html#aop-pointcuts-designators 이 글은 위의 내용을 요약/정리한 내용입니다. * 본 글에서 Designator는 지시어라는 용어로 나타냈습니다. Designator는 쉽게 말하자면 포인트컷 표현식 내에서 어떤 기능들을 수행하기 위해 정의해놓은 속성들입니다. 지원하는 포인트컷 지시어들 스프링 AOP는 다음의 AspectJ 포인트컷 지시어를 지원합니다. - execution : 메서드 조인 포인트에 매칭할 때, 주로 사용되는 기본적인 포인트컷 지시어입니다. - within : 주어진 타입으로 조인 포인트 범위를 제한할 수 ..
스프링 AOP는 오직 메서드 실행에 관한 조인 포인트만을 지원합니다. 포인트컷은 두가지 요소를 가집니다. 하나는 signature 입니다. 이름과 파라미터들고 구성됩니다. 다른 하나는 표현식입니다. 이 표현식은 매칭될 메서드를 결정합니다. @AspectJ 애너테이션 방식에서 포인트컷의 시그니처를 메서드 시그니처를 따릅니다. 표현식은 @Pointcut의 속성으로 지정됩니다. @Pointcut("execution(* transfer(..))")// the pointcut expression private void anyOldTransfer() {}// the pointcut signature 위의 예제에서 표현식은 "execution(* transfer(..))" 이고, 시그니처는 파라미터는 없으므로 any..