Java/Spring
-
Spring Security를 사용하여 커스텀 필터를 생성하지 않고 로그인 인증을 진행할때 AbstractAuthenticationProcessingFilter 를 상속받은 UsernamePasswordAuthenticationFilter 에 의해 진행된다.본인은 AbstractAuthenticationProcessingFilter 를 직접 상속받아 커스텀 필터를 만들었다. 특정 계정이 로그인 되어 있는 상황에서 다른 브라우저에서 로그인을 진행하면 최대 세션 개수에 의해 로그아웃이 진행되었어야 했다. 설정은 아래와 같다.maximumSession(1) 설정에 의해 최대 세션 개수는 1개이고 maxSessionsPreventsLogin(false) 로이전 사용자 만료 설정으로 설정했다.이전 사용자 만료 설..
Spring Security ConcurrentSessionControlAuthenticationStrategy 설정(동시세션제어 설정)Spring Security를 사용하여 커스텀 필터를 생성하지 않고 로그인 인증을 진행할때 AbstractAuthenticationProcessingFilter 를 상속받은 UsernamePasswordAuthenticationFilter 에 의해 진행된다.본인은 AbstractAuthenticationProcessingFilter 를 직접 상속받아 커스텀 필터를 만들었다. 특정 계정이 로그인 되어 있는 상황에서 다른 브라우저에서 로그인을 진행하면 최대 세션 개수에 의해 로그아웃이 진행되었어야 했다. 설정은 아래와 같다.maximumSession(1) 설정에 의해 최대 세션 개수는 1개이고 maxSessionsPreventsLogin(false) 로이전 사용자 만료 설정으로 설정했다.이전 사용자 만료 설..
2022.12.27 -
Spring Security 에서 세션 제어를 위해 인증 api를 추가해줘야 한다. 아래와 같이 HttpSecurity 의 .sessionManagement() 를 사용해 세션 관리 기능이 동작한다. @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .anyRequest() .authenticated() .and() .formLogin() .and() .sessionManagement() .maximu..
Spring Security 정리하기 (#3 세션 제어)Spring Security 에서 세션 제어를 위해 인증 api를 추가해줘야 한다. 아래와 같이 HttpSecurity 의 .sessionManagement() 를 사용해 세션 관리 기능이 동작한다. @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .anyRequest() .authenticated() .and() .formLogin() .and() .sessionManagement() .maximu..
2022.12.23 -
Spring Security 에서 인증이 되지 않은 사용자는 다른 페이지로 이동을 시도할 경우 로그인 페이지로 리다이렉트 됩니다. 사용자가 로그인 정보를 입력하고 로그인을 시도한다. 인증이 될 경우 Authentication 이라는 인증 토큰을 생성하고 해당 토큰을 Security Context 및 세션에 저장한다. 사용자가 요청을 하게 되면 Spring Security 는 세션에 저장된 인증토큰을 확인하여 인증된 사용자라고 판단하여 요청에 대한 응답을 하게 된다. @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure..
Spring Security 정리하기 (#2 Form Login 구현)Spring Security 에서 인증이 되지 않은 사용자는 다른 페이지로 이동을 시도할 경우 로그인 페이지로 리다이렉트 됩니다. 사용자가 로그인 정보를 입력하고 로그인을 시도한다. 인증이 될 경우 Authentication 이라는 인증 토큰을 생성하고 해당 토큰을 Security Context 및 세션에 저장한다. 사용자가 요청을 하게 되면 Spring Security 는 세션에 저장된 인증토큰을 확인하여 인증된 사용자라고 판단하여 요청에 대한 응답을 하게 된다. @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure..
2022.12.21 -
아래 내용은 인프런 정수원님의 강의를 듣고 정리하는겸 적은 글입니다. https://www.inflearn.com/course/%EC%BD%94%EC%96%B4-%EC%8A%A4%ED%94%84%EB%A7%81-%EC%8B%9C%ED%81%90%EB%A6%AC%ED%8B%B0 스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring Security - 인프런 | 강의 초급에서 중.고급에 이르기까지 스프링 시큐리티의 기본 개념부터 API 사용법과 내부 아키텍처를 학습하게 되고 이를 바탕으로 실전 프로젝트를 완성해 나감으로써 스프링 시큐리티의 인증과 www.inflearn.com Spring Boot 에서 Spring Security 를 사용하기 위해 아래와 같이 pom.xml에 의존성을 추가..
Spring Security 정리하기 (#1 사용자 정의 보안 기능 구현)아래 내용은 인프런 정수원님의 강의를 듣고 정리하는겸 적은 글입니다. https://www.inflearn.com/course/%EC%BD%94%EC%96%B4-%EC%8A%A4%ED%94%84%EB%A7%81-%EC%8B%9C%ED%81%90%EB%A6%AC%ED%8B%B0 스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring Security - 인프런 | 강의 초급에서 중.고급에 이르기까지 스프링 시큐리티의 기본 개념부터 API 사용법과 내부 아키텍처를 학습하게 되고 이를 바탕으로 실전 프로젝트를 완성해 나감으로써 스프링 시큐리티의 인증과 www.inflearn.com Spring Boot 에서 Spring Security 를 사용하기 위해 아래와 같이 pom.xml에 의존성을 추가..
2022.12.21 -
MyBatis 를 사용할 때 데이터를 사용하는 대입과 치환 방법 2가지가 있다. #{} 방법 //Model public class VOModel { String name; ...getter, setter 생략 } SELECT * FROM test_table WHERE name = #{name} 위와 같이 #{name} 을 사용하게 되면 아래와 같이 치환된다. name 의 값이 abc 라고 하면 아래와 같다. SELECT * FROM test_table WHERE name = 'abc' #{} 으로 사용하게 되면 변수에 작은 따옴표(')가 자동으로 붙여 쿼리가 수행되기 때문에 작은따옴표를 따로 붙일 필요가 없다. 좀더 깊이 들어가자면 #{} 를 사용하게 되면 처음 쿼리는 아래와 같다. SELECT * FR..
[MyBatis] #{} 와 ${} 의 차이MyBatis 를 사용할 때 데이터를 사용하는 대입과 치환 방법 2가지가 있다. #{} 방법 //Model public class VOModel { String name; ...getter, setter 생략 } SELECT * FROM test_table WHERE name = #{name} 위와 같이 #{name} 을 사용하게 되면 아래와 같이 치환된다. name 의 값이 abc 라고 하면 아래와 같다. SELECT * FROM test_table WHERE name = 'abc' #{} 으로 사용하게 되면 변수에 작은 따옴표(')가 자동으로 붙여 쿼리가 수행되기 때문에 작은따옴표를 따로 붙일 필요가 없다. 좀더 깊이 들어가자면 #{} 를 사용하게 되면 처음 쿼리는 아래와 같다. SELECT * FR..
2022.12.14 -
Statement 자바에서 정적 쿼리문을 수행할 때 java.sql 패키지에 있는 Statement 인터페이스를 사용하게 된다. Statement 객체에 Connection 되어 있는 곳에 쿼리문을 수행하고 결과를 반환한다. Statement 는 아래와 같은 동작 순서를 가진다. 1. SQL 쿼리문 분석 2. 쿼리문 컴파일 3. 실행 아래는 예시이다. int seq = 3; String sql_str = "SELECT name FROM test_table WHERE seq = " + se String url = "jdbc:mysql://localhost:3306/DB명"; String username = "DB 계정 ID"; String password = "DB 계정 PW"; Connection con..
[sql] statement 와 preparedStatementStatement 자바에서 정적 쿼리문을 수행할 때 java.sql 패키지에 있는 Statement 인터페이스를 사용하게 된다. Statement 객체에 Connection 되어 있는 곳에 쿼리문을 수행하고 결과를 반환한다. Statement 는 아래와 같은 동작 순서를 가진다. 1. SQL 쿼리문 분석 2. 쿼리문 컴파일 3. 실행 아래는 예시이다. int seq = 3; String sql_str = "SELECT name FROM test_table WHERE seq = " + se String url = "jdbc:mysql://localhost:3306/DB명"; String username = "DB 계정 ID"; String password = "DB 계정 PW"; Connection con..
2022.12.14