목록스프링 (43)
JAN's History

2탄 정리페이스북과 로그인 연동을 진행했고, 회원정보를 정상적으로 받는 것까지 확인했다.그리고 이제 회원가입과 로그인하는 로직을 만들어주면 완성이다! 1. 페이스북 회원정보 User에 담아 UserRepository에 담아주기회원가입을 하기위해서는 페이스북으로부터 받은 회원정보는 User 오브젝트에 담아줘야한다.save를 하기 위해선 UserRepository를 DI해줘야한다.그리고 유저의 정보를 Map에 담아 필수데이터인 username, password, email, name를 다운캐스팅해 유저 오브젝트에 담아준다.package com.cos.photogramstart.config.oauth;import com.cos.photogramstart.config.auth.PrincipalDetails;im..

1.OAuth2 로그인을 위한 세팅1.1 SecurityConfig.java에 설정 세팅하기oauth2Login() : 우리가 설정한 joinForm에서 form 로그인이 아닌 OAuth2 로그인도 인정해준다.userInfoEndpoint() : 해당 회사에서 인증이 완료가 된다면, 인증 코드가 아닌 회원정보로 받는다는 의미이다.OAuth2를 이용하면 인증 코드(=토큰)으로 받지 않아도 바로 scope로 정해진 정보를 받을 수있기 때문!userService() : 해당 로직을 실행시키고 데이터를 받을 서비스를 지정하는 영역이다.➡️ userService() 에는 응답받는 타입이 정해져있으므로, 그 타입에 맞게 이 부분을 만들러 가보자!1.2 OAuth2DetailsService.java 파일 세팅하기@..

1. OAuth란?1.1 OAuth의 정의OAuth(Open Authorization)는 제3자 애플리케이션이 사용자 자원을 접근할 수 있도록 허가하는 표준 프로토콜입니다.주로, 로그인을 위해 사용되며, 사용자 비밀번호를 노출하지 않고 안전하게 인증할 수 있습니다.1.2 OAuth의 동작 원리OAuth는 클라이언트, 리소스 소유자, 인증 서버, 자원 서버 네 가지 주요 역할을 포함합니다.사용자가 애플리케이션을 통해 로그인 요청을 하면, 인증 서버에서 사용자 인증을 진행하고, 인증 토큰을 발급합니다.애플리케이션은 발급받은 토큰을 사용하여 자원 서버에서 사용자 정보를 요청할 수 있습니다.➡️이제 OAuth의 정의와 동작원리를 이해하셨겠죠?2. 클라이언트와 서버 사이에 회원가입 과정 설명2.1 회원가입 과정사..

이제 advice 메서드가 @Around를 통해 낚아채는 것을 확인했으니, 내부에 유효성검사 로직을 넣어주면전처리 후처리 로직을 자동으로 실행할 수 있습니다.@Around("execution(* com.cos.photogramstart.web.api.*Controller.*(..))") public Object apiAdvice(ProceedingJoinPoint proceedingJoinPoint) throws Throwable { System.out.println(" web api 컨트롤러 ================"); Object[] args = proceedingJoinPoint.getArgs(); for (Object arg:args){ ..

AOP 설명 예시만약에 로그인 기능과 회원가입 기능을 구현한다고 했을 때,위와같은 그림처럼 기능마다 유효성검사, 보안처리를 전처리로 해야하고, 후처리로 로그를 남기는 등의 기능을 공통적으로 사용하게 되어있습니다.기본적으로는 전처리기능이 후처리기능보다 코드가 길어지게 되는데, 모든 Controller에서 공통되는 전처리 기능을 적게되면 공통된 코드가 반복되겠죠.➡️그래서 공통기능은 따로 분류해서 필터처리를 해두는 것이 바로 AOP입니다! AOP : 관점 지향 프로그래밍AOP란?관점 지향 프로그래밍이라고도 불린다. 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나눠보고 그 관점을 기준으로 각각 모듈화 하겠다는 의미.즉, 핵심 비즈니스 로직과 부가적인 관심사를 분리하여 코드의 재사용성을 높이고 유지..

스프링(Spring)에서 Ajax 통신을 사용하는 주요 이유는비동기 데이터 처리를 통해 즉각적으로 변화된 데이터를 받을 수 있다는 점요청에 대한 응답을 html이 아닌 Data(JSON)으로 받기 위함입니다!자세하게 아래에서 설명하도록 하겠습니다. 1. 요청에 대한 응답을 Data(Json)으로 응답을 받기 위함웹에서 회원가입을 수행하고 응답을 보통은 main화면에 다시 리턴을 해주게 됩니다.메인화면 -> 회원가입 -> 메인화면 과 같이 html파일을 응답해주게 되는 것이 기본 로직이었습니다.그러나 웹에서 데이터를 Java코드로 응답해줄 경우, 이해하기 못합니다.반대로 앱에서는 데이터를 Java코드로 응답해줄 경우, 이해할 수 있습니다.그래서 웹에서는 html를 리턴하는 서버, 앱에서는 Data를 리턴하..
스프링 프레임워크에서의 에러 처리는 필수적인데요!웹 개발을 하다보면 에러를 마주칠 때가 정말 많은데Whitelabel Error Page페이지를 그냥 띄워주게되면 사용자에게 좋지 않은 인터페이스를 보여줍니다.그래서 우리는 개발자로서 Exception을 꼭 처리해줘야해요예외 처리를 효과적으로 다루기 위해 @ControllerAdvice와 @ExceptionHandler 애노테이션을 사용할 수 있습니다. @ControllerAdvice 이 애노테이션은 전역적인 예외 처리를 담당하는 클래스를 정의할 때 사용됩니다. 이 클래스는 모든 컨트롤러에서 발생하는 예외를 중앙 집중적으로 처리합니다. @ExceptionHandler 이 애노테이션은 특정 예외 유형에 대한 처리 방법을 정의하는 메서드에 적용됩니다. 이 메..
AOP란?AOP는 관점 지향 프로그래밍을 의미하며, 애플리케이션의 여러 부분에서 반복적으로 발생하는 작업을 모듈화하는 기술입니다! 주요 관심사(Concerns)를 분리하여 모듈화함으로써 보안, 로깅, 트랜잭션 관리 등과 같은 부가적인 기능을 중앙에서 관리하고 적용할 수 있다는 장점이 있습니다.➕예를들어, 로그인을 할 때 유효성검사나 로그같은 로직들은 매 컨트롤러마다 적어두면 컨트롤러가 무거워지기 때문에 AOP로 따로 빼서 객체지향 관점으로 실행시키는 것이 바로 AOP입니다.Sentry로 로그 및 예외 관리하기스프링부트 애플리케이션을 개발할 때, AOP(Aspect-Oriented Programming)를 사용하여 중요한 부분에서 로그 및 예외를 관리하는 것은 매우 중요합니다! AOP를 사용하면 ..