본문 바로가기

분류 전체보기

(181)
로그인 인증 과정 추가해보기 - AuthenticationProvider 커스텀 1. 개요해당 프로젝트에서는 관리자 계정으로만 Username password 방식으로 로그인이 가능해야 한다. 이전 포스팅에서의 동작을 기반으로 해당 인증과정을 추가해보고자 한다.2. AuthenticationProvider지난 포스팅에서 언급했듯이 인증 자체는 AuthenticationProvider에서 진행되고, 그 결과를 AuthenticationManager가 받는다. 인증 과정을 추가하려면 AuthenticationProvider를 수정하면 될 것이다. protected void additionalAuthenticationChecks(UserDetails userDetails, UsernamePasswordAuthenticationToken authentication) throws Aut..
Json 로그인 분석하기 - 스프링 시큐리티의 동작 과정 1. 개요앞의 게시글에서 json을 사용한 로그인을 스프링 시큐리티를 사용하여 구현해보았다. 구글 코드를 참고하여 작성하다가  해당 코드를 보았다.UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken(username, password);//principal 과 credentials 전달return this.getAuthenticationManager().authenticate(authRequest); 해당 코드가 실제로 어떻게 동작하여 인증을 진행하는 지 궁금하여 이 게시글을 작성해보면서 공부하기로 하였다. https://runawayfromlazy.tistory.com/16 Hello, Sprin..
application/json 형식으로 관리자 로그인 구현하기 1. 개요해당 프로젝트에서 관리자 페이지를 만들어 운영하기로 했다. 운영하게 될 서비스는 소셜 로그인만 지원하도록 했지만 관리자 페이지는 username/password 형식으로 구현하도록 할 것이다. 해당 프로젝트는 스프링 시큐리티를 사용하므로 필터를 사용하여 로그인을 구현하고자 한다.2. 사용한 코드2-1. LoginFilterpublic class JsonUsernamePasswordAuthenticationFilter extends AbstractAuthenticationProcessingFilter { private static final String DEFAULT_LOGIN_REQUEST_URL = "/api/v1/login/admin"; // /login 으로 오는 요청을 처리할 것이..
백준 1074 Z (Java) https://www.acmicpc.net/problem/1074import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { static int cnt = 0; static int r; static int c; public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); StringT..
스프링부트 테스트코드 작성하기: Controller 1. 개요이전 포스팅에서 repository, service 계층의 단위 테스트를 작성해보았다. 이번에는 controller 계층의 단위테스트를 작성해보고자 한다.2. Controller@WebMvcTest(MemberController.class)@MockBean(JpaMetamodelMappingContext.class) //JPA 관련 빈들을 mock으로 등록class MemberControllerTest { @Autowired MockMvc mockMvc; @MockBean MemberService memberService; @Autowired ObjectMapper objectMapper; @Test @DisplayName("회원 활성화 완료 응..
백준 14891 톱니바퀴 (Java) https://www.acmicpc.net/problem/148911. 문제총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴가 1번, 그 오른쪽은 2번, 그 오른쪽은 3번, 가장 오른쪽 톱니바퀴는 4번이다.이때, 톱니바퀴를 총 K번 회전시키려고 한다. 톱니바퀴의 회전은 한 칸을 기준으로 한다. 회전은 시계 방향과 반시계 방향이 있고, 아래 그림과 같이 회전한다.톱니바퀴를 회전시키려면, 회전시킬 톱니바퀴와 회전시킬 방향을 결정해야 한다. 톱니바퀴가 회전할 때, 서로 맞닿은 극에 따라서 옆에 있는 톱니바퀴를 회전시킬 수도 있고, 회전시키지 않을 수도 있다. 톱니바..
스프링부트 테스트 코드 작성하기: Repository, Service 1. 개요지금까지 회원 관련 MVP를 구현해보았다. 해당 게시글에서는 현재까지 구현한 기능 중 회원 기능에 대한 테스트코드를 작성해보고자 한다. Repository의 테스트코드가 짧으므로 서비스 계층과 묶었다.2. Repository 계층 테스트@EnableJpaAuditing@TestConfiguration@EnableJpaRepositories(basePackages = "com.junior")//@EntityScan(basePackages = "com.junior.dto")public class TestConfig { @PersistenceContext private EntityManager entityManager; @Bean public JPAQueryFactory jpaQ..
백준 1469 숌 사이 수열 (Java) https://www.acmicpc.net/problem/1469 import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.StringTokenizer;public class Main { static int n; static int[] ans = new int[25]; static boolean[] visit = new boolean[25]; static int[] x; public static void main(St..