Java/Spring
-
Java 개발자라면 한번쯤은 봤을 Static 키워드이다. Static 키워드로 선언된 필드, 메소드, 클래스는 프로그램이 실행될 때 생성 및 초기화가 된다. 즉, 프로그램이 시작될 때 메모리에 올라간다. 메모리에 올라가 같은 주소만을 바라보기 때문에 공유할 수 있어 공유해야 하는 필드에 보통 사용한다. Static 키워드는 필드, 메소드, 클래스에 적용할 수 있다. static 필드 public class Obo { public String name = "obo"; } public class Ok { public static final int number = 123; public static String name = "ok"; } public class Test { System.out.println("..
Static 키워드Java 개발자라면 한번쯤은 봤을 Static 키워드이다. Static 키워드로 선언된 필드, 메소드, 클래스는 프로그램이 실행될 때 생성 및 초기화가 된다. 즉, 프로그램이 시작될 때 메모리에 올라간다. 메모리에 올라가 같은 주소만을 바라보기 때문에 공유할 수 있어 공유해야 하는 필드에 보통 사용한다. Static 키워드는 필드, 메소드, 클래스에 적용할 수 있다. static 필드 public class Obo { public String name = "obo"; } public class Ok { public static final int number = 123; public static String name = "ok"; } public class Test { System.out.println("..
2022.12.14 -
Spring Security 에서 권한에 따른 접근 불가한 url 에 대한 handler 설정이다. 본인은 권한 없는 사람의 접근에 따라 특정 화면으로 고정시킬 목적으로 handler 설정을 한다. 1. AccessDeniedHandler 발생 시 보여줄 View 화면 설정 본인은 아래와 같은 경로에 accessDenied.html 파일을 생성했다. 2. AccessDeniedHandler 설정 아래와 같이 security/handler/ 경로에 AuthenticationAccessDeniedHandler 클래스를 생성한다. import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServ..
[Spring Security] AccessDeniedHandler 설정Spring Security 에서 권한에 따른 접근 불가한 url 에 대한 handler 설정이다. 본인은 권한 없는 사람의 접근에 따라 특정 화면으로 고정시킬 목적으로 handler 설정을 한다. 1. AccessDeniedHandler 발생 시 보여줄 View 화면 설정 본인은 아래와 같은 경로에 accessDenied.html 파일을 생성했다. 2. AccessDeniedHandler 설정 아래와 같이 security/handler/ 경로에 AuthenticationAccessDeniedHandler 클래스를 생성한다. import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServ..
2022.12.02 -
Spring Security 에서 로그아웃을 하기 위해선 2가지 방법이 있다. 다른방법이 있을지 모르겠지만본인이 사용했던 방법은 2가지다..logoutUrl("URL") 과 .logoutRequestMatcher() 방법이다. 처음 설정할땐 .logoutUrl 을 사용했었으나 csrf() 설정 여부에 따라 GET 방식, POST 방식 요청이 달라져logoutRequestMatcher() 로 설정했다. 기본적으로 logoutUrl 은 "/logout" 으로 설정되어 있다.아무 설정도 안했을 땐 /logout 으로 요청 시 로그아웃이 된다.여기서 달라지는건 CSRF 활성화 여부이다. 아래는 Spring Security 의 logoutUrl 메서드이다. 먼저 주석내용을 구글번역기에 돌려보면 아래와 같다...
[Spring Security] logout 설정 2가지Spring Security 에서 로그아웃을 하기 위해선 2가지 방법이 있다. 다른방법이 있을지 모르겠지만본인이 사용했던 방법은 2가지다..logoutUrl("URL") 과 .logoutRequestMatcher() 방법이다. 처음 설정할땐 .logoutUrl 을 사용했었으나 csrf() 설정 여부에 따라 GET 방식, POST 방식 요청이 달라져logoutRequestMatcher() 로 설정했다. 기본적으로 logoutUrl 은 "/logout" 으로 설정되어 있다.아무 설정도 안했을 땐 /logout 으로 요청 시 로그아웃이 된다.여기서 달라지는건 CSRF 활성화 여부이다. 아래는 Spring Security 의 logoutUrl 메서드이다. 먼저 주석내용을 구글번역기에 돌려보면 아래와 같다...
2022.11.29 -
출처 : https://12bme.tistory.com/555 출처 : https://roadofdevelopment.tistory.com/56 위 티스토리에 적어놓은 내용을 바탕으로 작성했으며, 좀 더 이해하기 위한 글을 작성합니다. 서블릿 컨테이너는 개발자가 웹서버와 통신하기 위한 복잡한 일들을 할 필요가 없게 해준다. 컨테이너는 Servlet의 생성부터 소멸까지의 일련의 과정을 관리한다. 서블릿 컨테이너는 요청이 들어올때 마다 자바 쓰레드를 생성하여 작업을 한다. 서블릿 컨테이너의 대표적인 예로는 흔히 사용하는 Tomcat 이 있다. 여기서 서블릿이란 동적인 웹페이지를 만들기 위해 사용되는 자바 기반의 웹 프로그래밍 기술이다. 클라이언트의 요청이 있고 요청에 대한 응답 결과를 반환해야 하는데 이러한..
서블릿, 서블릿 컨테이너(WAS)와 스프링 컨테이너출처 : https://12bme.tistory.com/555 출처 : https://roadofdevelopment.tistory.com/56 위 티스토리에 적어놓은 내용을 바탕으로 작성했으며, 좀 더 이해하기 위한 글을 작성합니다. 서블릿 컨테이너는 개발자가 웹서버와 통신하기 위한 복잡한 일들을 할 필요가 없게 해준다. 컨테이너는 Servlet의 생성부터 소멸까지의 일련의 과정을 관리한다. 서블릿 컨테이너는 요청이 들어올때 마다 자바 쓰레드를 생성하여 작업을 한다. 서블릿 컨테이너의 대표적인 예로는 흔히 사용하는 Tomcat 이 있다. 여기서 서블릿이란 동적인 웹페이지를 만들기 위해 사용되는 자바 기반의 웹 프로그래밍 기술이다. 클라이언트의 요청이 있고 요청에 대한 응답 결과를 반환해야 하는데 이러한..
2022.11.28 -
Spring Security 설정 시 Session 생성에 관해 궁금하여 작성하게 되었다. Spring Security는 csrf 가 기본적으로 enable() 설정되어 있다. 매번 csrf 설정을 disable() 설정 하다보니 자동으로 Session이 생성되어 있고 서버와 통신할 때 CSRF 토큰값을 확인하지 않아 특정 에러가 발생하는걸 발견하지 못했다. 하지만 csrf 설정을 하다가 에러를 발견했다. 본인은 특정 게시판을 만드는데 로그인을 하지 않았을땐 메인페이지가 떠야하나 위와 같은 에러가 발생했다. 모든 요청(ajax) 에 대해 csrf 값을 체크하는데 세션이 존재하지 않아 뜨는듯한 느낌이였다. 일단 Spring 에서의 HttpSession 은 누가 생성하는가 봤더니 서블릿 컨테이너가 생성한다고..
[Spring Security] Cannot create a session after the response has been committed (세션 에러)Spring Security 설정 시 Session 생성에 관해 궁금하여 작성하게 되었다. Spring Security는 csrf 가 기본적으로 enable() 설정되어 있다. 매번 csrf 설정을 disable() 설정 하다보니 자동으로 Session이 생성되어 있고 서버와 통신할 때 CSRF 토큰값을 확인하지 않아 특정 에러가 발생하는걸 발견하지 못했다. 하지만 csrf 설정을 하다가 에러를 발견했다. 본인은 특정 게시판을 만드는데 로그인을 하지 않았을땐 메인페이지가 떠야하나 위와 같은 에러가 발생했다. 모든 요청(ajax) 에 대해 csrf 값을 체크하는데 세션이 존재하지 않아 뜨는듯한 느낌이였다. 일단 Spring 에서의 HttpSession 은 누가 생성하는가 봤더니 서블릿 컨테이너가 생성한다고..
2022.11.28 -
환경구성 : Spring Boot, Spring Security, Thyemeleaf Spring Security 에서는 기본적으로 CSRF disable() 설정을 하지않으면 true 로 설정되어 있다. GET 방식을 제외한 POST, PUT, DELETE 등 방식에 대해 csrf 토큰이 포함되어 있는지 확인한 후 포함되어 있지 않으면 403 에러를 발생시킨다. 1. csrf().disable() 해제하기 위와 같이 csrf disable() 설정을 주석처리 해준다. 기본적으로 설정을 하지 않으면 True 이기 때문에 설정을 안하셨으면 아무것도 안하셔도 됩니다. 2. View CSRF 토큰 설정하기 Spring Security 에서 인증을 하게 되면 header 안에 meta 태그로 발급한 csrf 토..
[Spring Security] CSRF 토큰 설정환경구성 : Spring Boot, Spring Security, Thyemeleaf Spring Security 에서는 기본적으로 CSRF disable() 설정을 하지않으면 true 로 설정되어 있다. GET 방식을 제외한 POST, PUT, DELETE 등 방식에 대해 csrf 토큰이 포함되어 있는지 확인한 후 포함되어 있지 않으면 403 에러를 발생시킨다. 1. csrf().disable() 해제하기 위와 같이 csrf disable() 설정을 주석처리 해준다. 기본적으로 설정을 하지 않으면 True 이기 때문에 설정을 안하셨으면 아무것도 안하셔도 됩니다. 2. View CSRF 토큰 설정하기 Spring Security 에서 인증을 하게 되면 header 안에 meta 태그로 발급한 csrf 토..
2022.11.25