Spring Boot (39) 썸네일형 리스트형 JWT 1 (session) OAuth + jwt -> 과제 https://github.com/Moonseonhyeon/springBoot-jwt/commits/master package들을 만들고 controller > RestApiController model > User repository > UserRepository https://github.com/Moonseonhyeon/springBoot-jwt/commits/master 우리가 security설정을 합니다 SecurityConfig.java만들어요. 모든 메서드에 post로 요청으로 test해볼 수 있다. 인터셉터 모든 서버에서 나만(서버) 알고 있는 키값을 정해요 매일매일 다른 걸로 랜덤하게 계속 사용자에게 응답 나에게 요청해서 응답받은 사용자인것을 검증한 것입니다.. OAuth 네이버 로그인 Optional 2. Oauth2 구글 로그인 + 페이스북 Map이라서 key값으로 서버끄고 패키지 만들기 Optional 제네릭안에 objectrk 만약에 User면 Optional이 User을 감싸고 있고 get -> user가 null이 아닐때만 써야 함. 아니면 nullPointException.... isPresent() -> 있 orElseGet -> 빈객체면 니가 하나 만들어서 리턴. orElseThrow -> Exection 던져줌. isPresent() -> -> 함수(화살표함수) : 한번만 쓸 때, 타입 신경안쓰고 만들 수 있다. PrincipalOauth2UserService 하나의 함수로 하기 힘들어서 다음 함수에 넘겨서 끝냄 ClientRegistration에 리다이렉션 받은 정보가 다 있음 여기서 중요한건 registrationId 이걸.. 1. OAuth2.0 구글 로그인 의존성 프로젝트 만들 때 Security 에서 Oauth2 Client 체크해도 좋고 pom.xml에 넣어도 좋다. org.springframework.boot spring-boot-starter-oauth2-client 내가 만든 PrincipalService를 타면 안되고 Oauth 서비스를 타야함. 구글서버에 요청 로그인 페이지를 돌려준다. 로그인 되고나면 응답할 때 code를 주는 방식이 대표적이다. Server가 client에게 code를 돌려주면 인증 끝났다. 인증뿐만아니라 권한도 필요함.. 이 code를 가지고 token을 요청할 수 있다. 응답으로 Access Token을 받고 나면 권한을 얻은 것이다. 구글서버에 요청하면 동의 화면이 뜬다. => scope를 체크하는 것이다. (어떤 어떤.. spring - 시큐리티 + OAuth+JWT 1. spring - 인터셉터 Data -(blog) 2. spring - 시큐리티 Data (securityex01) 3. spring - 시큐리티 + Facebook, google Data () 4. spring - 시큐리티 + JWT 5. spring - 시큐리티 + OAuth+JWT 안드로이드는 인증방법이 쿠키에 jsessionId을 담아서 sharedpreparence에 저장합니다. 이 다음 요청부터는 헤더에 쿠키넣어서 하기. 하지만 이방법은 단점이 있음. 서버가 여러개 늘어나면 이 세션 못씁니다. 그러면 또 다른 아래의 방법으로 데이터 베이스에 세션을 저장.. 하지만 또 단점이 있다. 하드디스크라서 I/O라서 무거우니까 아래의 이 방법으로 한다. Redis 메모리 서버다. (하드디스크가 없고... 스프링 트랜잭션 롤백하기 (한 Transaction 안에 commit 해야하는 함수가 여러개 일때) // 둘중에 하나라도 실패하면 rollback 하기 @Transactional(rollbackFor = Exception.class) public void updateAndDelete(Post post) { try { mRepo.update(post); mRepo.delete(post.getId()); System.out.println("DB 정상"); } catch (Exception e) { System.out.println("DB 오류"); throw new RuntimeException(e); } } @ControllerAdvice 예외 처리해주는 어노테이션 이전 1 2 3 4 5 다음