전체 글102 [Security + JPA + OAuth2] 카카오 로그인 구현하기 -1 세팅하기 Spring Security + JPA Data 를 이용한 카카오 로그인 구현을 하려고 합니다. 이 포스팅은 이전 포스팅인 Facebook 구현하기의 연장선 이지만, 이 글을 처음봐도 진행엔 문제없습니다. kakao developers 를 검색하고 접속 후 로그인합니다. 애플리케이션 추가하기를 눌러주세요. 앱 이름과 사업자명은 원하는데로 적습니다. 플랫폼 설정하기 들어가서 - Web 클릭합니다. 본인 localhost 를 적어주세요. 저장하고 나오면 Redirect URI 를 등록합니다. URI의 내용은 고정입니다. URI를 저렇게 해야합니다. 스프링과 oauth2 간의 약속입니다. 좌측 카카오 로그인 - 동의항목 탭에 갑니다. 닉네임과 프로필사진을 "사용" 으로 설정해주세요. 기타 다른부분을 설정해도문.. 2023. 1. 17. [Security + JPA + OAuth2] - 페이스북 로그인 - 4 @RequiredArgsConstructor @Service public class OAuth2DetailsService extends DefaultOAuth2UserService { private final UserRepository userRepository; @Override public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2AuthenticationException { System.out.println("OAuth2 서비스 "); OAuth2User oauth2User = super.loadUser(userRequest); System.out.println(oauth2User.getAttributes()); User us.. 2023. 1. 17. [Security + JPA + OAuth2] - 페이스북 로그인 -3 Facebook으로 로그인 설정이 끝났다면 facebook 로그인 버튼에 onclick 이벤트를 지정해준다. 여기서 href='/oauth2/authorization/facebook' 은 고정 href 값이다. 페이스북 외 다른 소셜로그인(네이버, 카카오 등) 도 동일하다. 왜냐하면 스프링 개발팀에서 그렇게 정해놨기 때문이다 아무튼 다시본론으로 들어가면 이렇게 해주면 이렇게 페이스북 로그인 껍데기가 구현된다 ( 아직 서비스 로직을 구현안했기때문에) 즉 이제 1번 과정까지 한것이고, 이제 페이스북으로 부터 정보를 받아오는 과정을 해야할텐데, 정보가 어떻게 넘어올까? @Service public class OAuth2DetailsService extends DefaultOAuth2UserService { @.. 2023. 1. 17. [Security + JPA + OAuth2] - 페이스북 로그인 - 2 설정 후 바로 Run을 돌리면 오류가 뜨는데 이는 Spring Security 의 설정이 안돼서 그렇다. Security 설정을 한 클래스로 가서 설정을 하자 (본인의 경우 SecurityConfig) @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http.csrf().disable(); http.authorizeRequests() .antMatchers("/", "/user/**", "/image/**", "/subscribe/**", "/comment/**","/api/**").authenticated()// 인증필요를 걸어둔것 .anyRequest().permitAll() .and().. 2023. 1. 15. [Security + JPA + OAuth2] - 페이스북 로그인 - 1 facebook devloper 에 가서 로그인 후 개발자센터를 시작하면 앱 ID와 앱 시크릿 코드를 생성받는다. 이 생성된 코드들을 application.yml 에 등록합니다. 꼭 yml 문법을 지켜야 오류가 발생하지않습니다. ( : 다음에 꼭 띄어쓰기 ) 좌측 상단쪽에 문서를 클릭 후 인증탭의 Facebook Login을 클릭합니다. 좌측에 웹 클릭 후 스크롤을 내리다보면 호출 샘플로 scope가 있는데 이걸 복사합니다. yml에 추가하면 앱에 대한 설정은 끝. 2023. 1. 15. [Spring] AOP 처리하기 - 유효성 검사 자동화 AOP란 Aspect Oriented programming 으로 AOP의 정의 AOP는 한국에서 관점지향 프로그래밍, 또는 상황중심 프로그래밍으로 번역되는 하나의 프로그래밍 방법론이다다. AOP는 절차지향이나 객체지향 프로그래밍처럼 그 자체로 하나의 프로그램을 형성할 수 있는 건 아니다. 하지만 AOP는 객체지향 코드 위에서 이루어지며 객체지향을 보조하는 역할을 한다고 보시면 된다. handler의 aop 패키지를 하나 만들고, @Component //RestController, Service 모든 것들이 component를 상속해서 만들어져있음 @Aspect public class ValidationAdvice { @Around("execution(* com.pyo.pyostagram.web.api.*.. 2023. 1. 15. [Spring Data JPA] 댓글 구현하기 -5 유효성 검사하기(null 체크) @Data public class CommentDto { //NotNull = null값 체크 //@NotEmpty 빈값이거나 null을 체크 //NotBlank = 빈값이거나 null체크 그리고 빈 공백(스페이스) 까지 @NotBlank private String content; @NotNull private Integer imageId; // toEntity가 필요없다 } Dto 에서 int - Integer로 바꿔주었다. @PostMapping("/api/comment") public ResponseEntity commentSave(@Valid @RequestBody CommentDto commentDto, BindingResult bindingResult, @AuthenticationPrincip.. 2023. 1. 15. [Spring Data JPA] 댓글 구현하기 -4 댓글 삭제 ajax 및 동적처리 우리는 댓글 삭제를 구현하고 싶다. story를 켰을때 댓글이 나올것이고, 댓글 삭제버튼은 유저 본인이 아닌이상 X표시가 나와선 안된다. 그렇다면 문제가 하나 있다. 그렇다면 principalId가 필요할텐데 어디서 가져오냐는 거다. 우리가 가진 정보는 image.id 밖에 없다. 우리가 현재 getStoryItem 을 보면 principalId를 받아오지 않기 때문에 삭제 로직을 하기 위해선 principalId를 어디선가 받아와야 한다. 한가지 방법이 있는데 정답은 header 에 있다. header.jsp 의 body문 바로 아래에 이렇게 히든타입을 걸고 value에 담는다. 그 후 //(0) 현재 로그인한 사용자 아이디 let principalId = $("#principalId").val(); .. 2023. 1. 15. 이전 1 ··· 5 6 7 8 9 10 11 ··· 13 다음