728x90
반응형

category 59

[디자인 패턴] 자바의 싱글톤 패턴 (static)

싱글톤 패턴(Singleton Pattern) 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴으로, 보통 데이터베이스 연결 모듈(DBCP, DataBase Connection Pool)에 많이 사용된다. 하나의 인스턴스를 만들어 놓고 해당 인스턴스를 다른 모듈들이 공유하며 사용하기 때문에 인스턴스를 생성할 때 드는 비용이 줄어드는 장점이 있고, 반대로 의존성이 높아진다는 단점이 있다. 자바에서 static 키워드를 사용하면 오직 하나의 인스턴스를 사용하는 싱글톤 패턴이 된다. class Singleton{ private static class singleInstanceHolder{ private static final Singleton INSTANCE = new Singleton(); } public..

JAVA/Design Pattern 2022.11.04

[Spring Security] GET 로그아웃 처리

스프링 시큐리티의 로그아웃 기능은 별도의 설정을 하지 않으면 POST 방식을 지원한다. 이를 GET 방식으로 변경해주었다. tymeleaf를 사용한 get 로그아웃 처리 1. build.gradle dependency 추가 implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5' 2. logout 기능을 구현할 .html 헤더 부분에 springsecurity name space 추가 3. 로그인 여부에 따라 보여진 태그 sec:authorize의 isAnonymous() / isAuthenticated() 로 구분 및 로그아웃 경로 설정 로그인 | 회원가입 회원명 | 로그아웃 isAnonymous() : 로그인하지 않은 사용자에게만 ..

[JAVA 8] 분할 가능한 Iterator인 Spliterator 인터페이스

자바8에서 추가된 쪼갤 수 있는 기능을 가지고 있는 iterator란 뜻으로, Split + Iterator 인 Spliterator 인터페이스는 병렬 작업에 특화되어있다. 즉 Iterator가 반복이라면, Spliterator는 분할 가능한 반복이다. Iterator import java.util.*; public class Solution3 { public static void main(String[] args) { List list = new ArrayList(); list.add("콜팝"); list.add("치킨"); list.add("곱창"); list.add("팝콘"); list.add("피자"); Iterator listIterator = list.iterator(); while(listI..

JAVA/Modern JAVA 2022.11.01

[Spring Security] 스프링 시큐리티를 이용하여 로그인, 회원가입 구현하기

Config @Configuration @RequiredArgsConstructor public class SecurityConfig { private final AuthenticationSuccess authenticationSuccess; private final AuthenticationFailure authenticationFailure; private final LogoutExecute logoutExecute; private final LogoutSuccess logoutSuccess; private final UserDetailsService userDetailsService; private final AuthenticationEntryException authenticationEntryEx..

[Spring Secururity ERROR] 스프링 빈 순환 참조 에러 The dependencies of some of the beans i

스프링 시큐리티 설정 파일 세팅 중 비밀번호 암호화 설정을 위해 PasswordEncoder 반환 타입의 메소드를 선언 하는 중 순환 참조 오류가 발생하였다. Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true. 순환 참조에 의존하는 것은 권장되지 않으며 기본적..

[Spring Security] 유저별 권한 설정

1. 표현식 메소드 동작 authenticated() 인증된 사용자의 접근을 허용 fullyAuthenticated() 인증된 사용자의 접근을 혀용, rememberMe(로그인 상태유지) 인증 제외 permitAll() 무조건 접근 허용 denyAll() 무조건 접근 허용하지 않음 anonymous() 익명 사용자만 접근 허용 (인증된 사용자는 접근 불가) rememberMe() 기억하기를 통해 인증된 사용자의 접근 허용 access(String) 주어진 SpEL 표현식의 평가 결과가 true이면 접근을 허용 hasRole(String) 사용자가 주어진 역할이 있다면 접근을 허용 -> ex) USER hasAuthority(String) 사용자가 주어진 권한이 있다면 접근을 허용 -> ex) ROLE_U..

[Spring Security] 동시 로그인 제한하기(동시 세션 제어)

❄️ 설정한 최대 허용 가능 세션을 초과했을 경우 1️⃣ 이전 사용자 세션 만료 처리 (첫 번째 사용자) : maxSessionsPreventsLogin(false) 2️⃣ 현재 사용자 인증 실패 처리 : maxSessionsPreventsLogin(true) 해당 기능을 구현하기 위해서는 스프링 시큐리티가 적용되어 있어야 한다. [Spring Security] Spring Security 설정하기 import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springfram..

[Spring Security] Remember Me 인증(로그인 상태 유지)

Remember Me 로그인 세션(JESSIONID)이 만료되고 웹 브라우저가 종료된 후에도 어플리케이션이 사용자를 기억하는 기능 해당 기능을 구현하기 위해서는 스프링 시큐리티가 적용되어 있어야 한다. [Spring Security] Spring Security 설정하기 import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.ann.. zhfvkq.tistory.com import lombok.RequiredArgs..

[Spring Security] WebSecurityConfigurerAdapter Deprecated 해결

스프링 시큐리티를 적용하기 위해 WebSecurityConfigurerAdapter 를 상속 받으려고 했는데, 더 이상 해당 클래스가 사용되지 않는다는 경고가 나왔다. WebSecurityConfigurerAdapter 클래스 - 스프링 시큐리티가 초기화 되면서 해당 클래스가 실행되면, 설정 초기화 작업에 도움을 주는 api들이 실행 된다. 'org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter' is deprecated SecurityFilterChain Bean을 사용하여 HttpSecurity를 구성, WebSecurityCustomizer Bean을 사용하여 WebSecurity를 구..

728x90
반응형