본문 바로가기

Dev

(61)
스프링 시큐리티 로그인 인증 그 후... 스프링 시큐리티를 공부하는 과정에서 공부하고 이해한 내용을 바탕으로 풀어보려고 한다. 현재 개인적으로 프로젝트를 진행 도중 회원가입을 하는 과정에서 가입하려는 이메일로 인증 과정을 거치게 하였다. 여기서 문제는 가입하려는 이메일로 인증을 다 받기도 전에 디비에 먼저 데이터를 넣어주다보니 로그인이 되버리는 현상이 생겼다. 시큐리티에서 로그인할 때 이메일 인증이 안되면 인증이 거부되어 튕기게 할 수 없을까?? 라는 의문점이 생겼다. 구글을 뒤적뒤적.. 닥치는데로 찾고 정리하고 공부하기 시작! 방법은 있었다! 지난번에 스프링 시큐리티에 관해서 정리를 한 적이 있는데 거기에 이어서 설명하고자 한다. 지난글을 보려면 여기를 확인하면 된다. 2020/11/19 - [Dev/Spring Boot] - 스프링 시큐리티..
스프링 시큐리티 적용 (CSRF) 스프링 시큐리티(Spring Security)에 대해서 공부한 내용을 정리하며 진행 이해한 내용을 바탕으로 풀어서 정리하였다. 먼저 스프링 시큐리티라고 하면 제일먼저 등장하는 흐름도이다. 아래는 스프링 필터체인의 세부화된 그림으로 이 두가지 그림을 같이 보면서 정리하려고 한다. 스프링상 보안에는 필터/체인 이 존재하는데 요청(Request)가 오게될 경우에는 인증 및 권한 부여를 위해 필터를 하나씩 통과하는 과정을 거치게 된다. 그리고 각 기능별로 관련필터를 찾을 때까지 체인을 통과하는 과정을 겪는다. 예시 HTTP 기본 인증 요청은 BasicAuthenticationFilter에 도달할때까지 필터 체인을 통과한다. HTTP Digest 인증 요청은 DigestAuthenticationFilter에 도달..
@Valid로 유효성 체크하기 혼자 공부하며 이해한 내용을 바탕으로 정리하고자 한다. 먼저 유효성 체크를 해야하는 경우는 다음과 같다 회원가입을 할 경우에 패스워드에 보안문제로 인해 특수문자나 영어 대소문자등을 포함해서 사용해야 하는 경우 이메일 형식의 아이디를 사용하는데 중간에 @가 빠진 상태로 입력하는 경우 대게 유효성 체크를 해주는 경우는 프론트와 백엔드에서 이중으로 처리해주는 것이 좋다. 스프링 부트에서는 도메인으로 사용하는 필드에 조건과 메시지를 작성해주면 @Vaild 어노테이션과 함께 유효성 검사를 할 수 있다. 제일먼저 build.gradle에 아래와 같이 추가해줘야 한다. 스프링 부트 2.3버전 이상부터는 validation이 스프링 부트 스타터 자체에 포함되어있지 않고 별도의 모듈로 분리되었다는점 알아두자! // va..
스프링 빈 주입방법과 템플릿 우선순위 스프링 빈 주입방법에는 크게 두가지로 나뉜다. 1. 컴포넌트 스캔을 이용한 등록방법 컴포넌트 스캔을 이용한 방법은 주로 실무에서 정형화된 컨트롤러, 서비스, 리포지토리 같은 곳에 사용한다. 즉, 고정화 되어 바뀔일이 없을 경우! 사용한다고 보면 된다. 무작정 쓰는거보다 상황에 맞게 사용하는것이 중요!! -- MemberController(컨트롤러) @Controller public class MemberController { private final MemberService memberService; /** * DI 주입방법 중 필드주입 방법 * 별로 좋지 않음 */ // @Autowired private final MemberService memberService; /** * DI 주입방법 중 생성자 ..
파이썬3 함수에서의 화살표 파이썬3에서 화살표 함수를 사용하는 것을 볼 수 있다. 알고리즘 문제를 풀어보려고 보던 도중 이해가 잘 안되어 찾아보게 되었다. def funName(x: str, y: float = 6.5) -> int: return x + y value = funName(3) print(value) 위와같은 예제가 있다고 했을 때 함수명 : def 다음에 나와있는 funName x : str 콜론(:) 다음에 적어주는 것은 매개변수에 할당되는 형식을 말한다. y : float = 6.5 초기값을 콜론다음에 해당 형식 뒤에 = 하고 값을 적어줄 수 있다. (변수 : 형식 = 기본값) -> int : 이거의 뜻은 이 함수가 반환해주는 값의 형식이 int라는 것을 말한다!
테스트에 사용하는 어노테이션 스프링 부트에서는 편리하게 테스트시 유용하게 해주는 어노테이션이 존재한다. @SpringBootTest 스프링 테스트 할 경우에는 부트에서는 이 어노테이션 하나로 해결할 수 있다!! 참 편리하다 >.
파이썬 self & __init__ 알고리즘 코딩테스트에 보면 def로 선언한 함수 안에 self를 계속 마주치게 된다. self가 무엇인지.. 어떻게 사용해야하는지 전혀 감이 안왔고, 찾아보면서 알게되었다. 나처럼 고민하는 사람들이 있을 것 같아 아래의 예시를 통해 이해해보자! class FourCal: # setData 함수 def setData(self, first, second): self.first = first self.second = second # add 함수 def add(self): result = self.first + self.second return result a = FourCal() # a.setData를 했을때 a는 함수인 setData를 가르키고 4는 first, 2는 second를 가르킨다. # 즉 setD..
파이썬 모듈 파이썬에서는 하나의 스크립트 프로그램을 모듈이라고 한다. 즉 .py를 포함하지 않는 파일의 이름 자체를 모듈로 사용할 수 있다. 아래 예제를 통해 이해해보도록 하자! # 예제1 from typing import Any, Sequence def max_of(a: Sequence) -> Any: """시퀀스형 a원소의 최댓값을 반환""" maximum = a[0] for i in range(1, len(a)): if a[i] > maximum: maximum = a[i] return maximum # 주의깊게 봐야할 부분!!! # 예제2번에서 아래 if문이 수행안되는 이유는 # if __name__ == '__main__': 이거 때문이다!! if __name__ == '__main__': print('배열..