반응형

분류 전체보기 130

스프링 시큐리티 + Ajax post → 403 에러

상황: 스프링 시큐리티로 로그인을 구현한 상태에서 회원가입 시 username 중복검사 함수를 ajax post 방식으로 구현했는데 403 에러가 발생함. 원인: csrf(Cross-site request forgery)의 token의 누락 해결방법1: http.csrf().disable() 코드를 추가하여 csrf를 비활성화 (보안 문제가 발생할 수 있어서 권장하지 않음) 해결방법2: Ajax 요청하는 Header에 csrf token 값을 추가하여 전송 * html 의 태그 안에 csrf meta tag 추가 * .js 에 아래 추가 -> request header가 이 정보를 이용하도록 설정 var token = $("meta[name='_csrf']").attr("content"); var hea..

스프링 2022.01.29

WebSecurityConfigurerAdapter의 configure() 오버라이딩

WebSecurityConfigurerAdapter 를 extends 하는 클래스를 생성하면, configure() 오버라이딩 된다. 이때, configure()의 파라미터에 따라 3가지 메서드를 오버라이딩 할 수 있다. 1. void configure(HttpSecurity http) : 요청 경로에 대한 접근 권한, 로그인, 로그아웃 등 설정 2. void configure(WebSecurity web) : 특정한 요청을 무시할 수 있다. 3. void configure(AuthenticationManagerBuilder auth) : 사용자 인증 정보를 구성한다. (1) inmemory 방법 @Configuration @EnableWebSecurity @RequiredArgsConstructor p..

스프링 2022.01.27

스프링 시큐리티 동작 순서

1. Http Request 요청 2. AuthenticationFilter username와 password를 조합하여 UsernamePasswordAuthenticationToken 생성 3. AuthenticationManager에 Token 전달 AuthenticationManager에서 Token이 유효한지 검증 → 구현체인 ProviderManager에서 Token에 대한 인증 처리 4. UserDetailsService에서 loadUserByUsername() 함수를 호출하여 DB에 접근하고 정보가 존재하면 UserDetails 타입으로 반환 (인증 성공하면 AuthenticationManager는 Authentication 객체를 반환) 5. SecurityContextHolder.getC..

스프링 2022.01.27

Java 8 Stream 에 대하여

1. Stream 생성하기 - Collection(List, set, map ...)의 Stream 생성 대상collection.stream(); - Array(배열)의 Stream 생성 //방법1. Arrays.stream(대상배열); //방법2. Stream.of(대상배열); 2. 데이터 가공 (중간연산) - filter() : stream 에서 조건에 맞는 데이터만 걸러냄 int[] arr = {1, 2, 3, 4, 5}; int result = arr.stream().filter(i -> i > 3).count(); System.out.println(result); //result = 2; * Predicate를 받아서 boolean 타입을 반환하는 람다식을 인자로 받음 - map() [데이터변환..

Java 2022.01.20

java.util.Arrays에 대하여

Arrays 클래스란? 배열을 다루기 편리하도록 static 메서드를 제공하는 클래스 (static 메서드이기 때문에 'Arrays.메서드()' 와 같이 사용 가능함) Arrays 클래스 메서드? - asList() : 배열을 List로 변환하는 메서드 String[] arr = {"a", "b", "c"}; List list = Arrays.asList(arr); * asList() 로 만들어진 List에는 원소 추가(add) 불가능하며, 원소의 값 변경 시 원본 배열의 값도 함께 바뀌게 됨 - copyOf(), copyOfRange() : 배열을 복사하는 메서드 Arrays.copyOf([] '원본배열', int 새 배열의 길이); Arrays.copyOfRange([] '원본배열', int from..

Java 2022.01.20

jqGrid의 colModel 옵션

name 해당 column에 출력할 데이터명 서버에서 넘어온 데이터명 index 정렬할 때 서버로 전송 시 넘어가는 데이터명 width column 가로 사이즈 align column 내의 데이터 정렬 ( left / center / right ) sortable 해당 column의 정렬 여부를 지정한다. 일반적으로 true이며, false 로 지정하면 정렬 허용X hidden 특정 column의 내용을 보이지 않게 함 ( true / false ) format intefer, number, currency, data 등 column 데이터의 fotmat을 설정하기 위해 사용 label colNames 가 비어있을 경우 column의 제목을 지정 (colNames와 label이 없을 경우는 name으로 ..

grid 2022.01.10

Mybatis 시작하기

1. pom.xml 파일에 mybatis 라이브러리를 추가 org.mybatis mybatis xxx 2. XML에서 SqlSessionFactory를 빌드 // JDBC 연결과 관련된 설정 // SQL 코드와 매핑에 대한 정의를 가지는 Mapper 관련된 설정 SqlSessionFactory란? mybatis를 이용하여 SqlSession을 열거나 쿼리를 실행할 때 SqlSessionFactory를 사용한다. SqlSessionFactory는 Mybatis 설정파일(xml)과 SqlSessionFactoryBuilder 로 인스턴스를 생성한다. Mybatis 설정파일이란? JDBC 연결과 관련된 설정 & SQL 코드와 매핑을 정의한 Mapper 에 대한 설정을 해준다. 3. SqlSessionFacto..

Mybatis 2022.01.10

java.util.Calendar 에 대하여

java.util.Calendar 란? 자바에서 날짜와 시간을 처리하기 위한 필드와 메소드가 포함되어 있는 추상 클래스이다. 객체를 생성하지 않고 바로 사용할 수 있다. Calendar cal = Calendar.getInstance(); System.out.println(cal.getTime()); Calendar 클래스의 메서드 add() 메서드 전달된 Calendar 필드에서 일정시간 만큼 더하거나 빼주는 메서드이다. 아래와 같이 120s 를 더한 날짜와 시간을 출력해줄 수 있다. cal.add(Calendar.SECOND, 120); System.out.println(cal.getTime()); before() 메서드 현재 Calendar 인스턴스가 전달된 객체가 나타내는 시간보다 전 인지 판단한..

Java 2021.12.23

<foreach> 문에 대하여

List names = {"kim", "lee", "park"}; SELECT * FROM 테이블명 WHERE 1=1 AND ${name} IN #{n} collection - 전달받은 인자( 반드시 List 이거나 Array 형태 ) item - collection의 alias 명 open - 구문 시작할 때 삽입할 문자열 close - 구문 종료할 때 삽입할 문자열 separator - 반복 구문 사이에 출력하는 구분자 index - 반복되는 구문 번호 ( 0부터 순차 증가 ) ▶ MyBatis에서 #{}와 ${}의 차이점 ? - #{} : 작은 따옴표(')가 자동으로 붙어서 쿼리가 실행된다. - ${} : 테이블명이나 컬럼명을 동적으로 사용할 때 쓰인다.

Mybatis 2021.12.21
반응형