spring data jpa 간단한 튜토리얼라한사 아github : https://github.com/arahansa/learnspringdatajpa
스프링 데이터 Jpa 간단한 튜토리얼 입니다. 초보용^^;
스프링 부트, 메이븐..
내용은 간단한 매핑, CRUD, 페이징, 스프링 부트조금.
자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ) DK LeeJava web development 10 (draft)
자바 웹 개발 시작하기
(10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)
2012. 1. 18
벌써 2년도 넘은 자료지만
그래도 필요하신분이 있을지 몰라서...
(지금보니 2년사이 많은것을 배운것 같네요 ㅎㅎ)
사실 마지막 주차는 발표자료 마무리가 부족하다.
그 당시 뭔가 급한일이 있어서;;; (일꺼라 추측)
지금와서 문서에 손을 대기는 좀 그래서 부족하지만 수정없이 배포한다.
spring data jpa 간단한 튜토리얼라한사 아github : https://github.com/arahansa/learnspringdatajpa
스프링 데이터 Jpa 간단한 튜토리얼 입니다. 초보용^^;
스프링 부트, 메이븐..
내용은 간단한 매핑, CRUD, 페이징, 스프링 부트조금.
자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ) DK LeeJava web development 10 (draft)
자바 웹 개발 시작하기
(10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)
2012. 1. 18
벌써 2년도 넘은 자료지만
그래도 필요하신분이 있을지 몰라서...
(지금보니 2년사이 많은것을 배운것 같네요 ㅎㅎ)
사실 마지막 주차는 발표자료 마무리가 부족하다.
그 당시 뭔가 급한일이 있어서;;; (일꺼라 추측)
지금와서 문서에 손을 대기는 좀 그래서 부족하지만 수정없이 배포한다.
Light Tutorial DjangoKwangyoun JungLight Tutorial Django
Studybee 3주차 - 가볍게 배우는 장고!!
Django를 이용해 블로그를 만들기 전에 가볍게 Django에 대해 알아보고 익숙해져 봅시다.
**http://www.studybee.kr 에서 운영하는 '초심자를 위한 웹개발' 클래스에서 만드는 교재이며,
장고를 이용해 간단하게 블로그를 만드는 것을 목표로 하고 있습니다.
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220Seomgi HanAWS위에 Django를 올려서 활용하고 있는 피플펀드의 서비스에서 성능개선을 위해 AWS CloudWatch, New Relic APM 등을 활용해 점검했던 포인트와 해결방법, 그리고 성과에 대해서 공유합니다.
Web micro blogHyeonseok HanJava JSP MVC2 구조를 이용한 Web Micro blog
: Micro blog를 구현하기위해 페이스북, 인스타그램과 같은 성공적인 웹서비스를 모티브로 하였습니다.
github : https://github.com/HanHyeonseok/Micro_blog_WebProject/tree/master/KH
쇼핑검색 React 전환 경험 공유NAVER SHOPPINGSession 1 - 김득중 쇼핑검색 React 전환 경험 공유
2019년 9월 6일 네이버 쇼핑 개발자 meet up 행사인 'SHOWROOM' 에 발표된 자료입니다.
보다 자세한 내용은 http://nshop-developer.github.io 을 참고해주세요.
(2019년 9월 30일 오후 오픈 예정)
2. • 본 글은 Petri 라는 외국의 개발자분께서 쓰신 글을 번역한 글을
조금 더 알기 쉽게 ppt로 정리하였다.
역자가 아직 스프링 시큐리티와 소셜에 익숙하지 않으며,
JavaConfig 설정도 익숙하지 않아서 애로사항이 많아
• 정리할겸 만들어봤다. 번역글은
http://adunhansa.tistory.com/192 에 있으며
번역글이 좀 많고 읽으며 복붙해도 이해가 바로 잘 안되서
일단 둘러보기정도용도로
본 ppt는 쓰일 것이다.
• 원래 글작성자분=>
• 블로그는 http://www.petrikainulainen.net/
0. 들어가기앞서 2
4. • 자 들어가기 앞서서 크게 뭐뭐가 있는지 한번
살펴보도록 하겠다.
미리 큰 밑그림을 그려두고 소스를 복붙할때마다
• 이게 어디서 어떻게 작동하는지 알아두면 좋을
것같다는 생각이다.
• 일단 패키지가 뭐 뭐가 있는 한번 살펴보겠다.
• 자세한 내용은
http://adunhansa.tistory.com/192 참조
2. 환경설정 – 들어가기 앞서 4
6. 6
• 여기까지는 잡다한 설정과
• jsp 파일들 이 있는 곳..
• 아. 뭐가 이리 많어~_~
• 하나 하나 알아보자. ㅎㅎ
2. 환경설정 – 들어가기 앞서
7. 7
• 아차, 자 본 ppt를 보는 데 있어서 큰 뿌리?
맥이라고 할만한 것은.
일반전통적방식과 소셜기능으로 가입&로그인하는
경우가 있으니 스프링에서 이 두 가지 경우를
생각해야 한다는 것이다.
• 따라서 인터페이스도 두가지 경우로 나뉘며,
가입클래스도 두 가지 경우를 분기혹은 다른
클래스로 나눴던 것같다(기억에..아마도?;;)
8. 8
만드는 순서. 일단
ExampleUserDetail
RepositoryUserDetailService
UserRepository
User
SimpleSocialUserDetail Service
설정부터 들어갈 줄 알았는데,
이런 작업이 먼저 들어가더라.
2. 환경설정 –
9. 9
• 인증과정에서 세가지 컴포넌트가 필요하다고
하는데
1. 인증된 유저세부사항을 담을 클래스
2. UserDetailService 인터페이스
3. SocialUserDetailService 인터페이스
이다.
• 1번의 내용은 UserDetails 와
SocialUserDetails 로 나는데 이는
SocialUser라는 클래스가 가지고 있으니
이를 확장해서 쓰면 된다고 한다.
2. 환경설정
10. • 대략 이런 느낌의 ExampleUserDetails 를
만든다.
만드는 순서. 일단
ExampleUserDetail
RepositoryUserDetailService
UserRepository
User
SimpleSocialUserDetail Service
2. 환경설정 10
11. • UserRepository를 가지고서
또 구현
클래스를
만든다^^
만드는 순서. 일단
ExampleUserDetail
RepositoryUserDetailService
UserRepository
User
SimpleSocialUserDetail Service
2. 환경설정 11
12. 만드는 순서. 일단
ExampleUserDetail
RepositoryUserDetailService
UserRepository
User
SimpleSocialUserDetail Service
소셜기능도 유저디테일서비스를
이미 있는 스프링의
인터페이스등을 이용해서 만든다.
2. 환경설정 12
13. 만드는 순서. 일단
ExampleUserDetail
RepositoryUserDetailService
UserRepository
User
SimpleSocialUserDetail Service
유일한 엔티티인
유저 클래스도 만든다.
2. 환경설정 13
14. 14
자 이제 설정~~
들어간다~~~
<=Web.xml 인듯하다
<=applicationContext
<=Datasource와 트랜잭션매니져, 영속화 관련 빈설정들
<= 시큐리티 설정
<= 소셜 설정
<= dispatcherServlet 설정이 들어가는 곳인듯하다!
2. 환경설정 – 들어가기 앞서
15. • 영속콘텍스트 설정이다. 영속 단어가..입에 잘 안
붙는데.. 디비저장부분.. 뭐..이런 느낌이다.;;
• 아웃라인이 더 나아보인다. 데이터소스,
트랜잭션매니져, 엔티티매니져팩토리
2. 환경설정- 영속 클래스 15
16. • 시큐리티 콘텍스트 설정..
빈으로는 패스워드인코더, 소셜디테일서비스,
유저디테일서비스가 있고
configure 로 보안설정들을 한다.
2. 환경설정- 시큐리티 클래스 16
17. • 소셜 콘텍스트는 소셜 키설정등을 한다. 여기서 봐야할 것이
JdbcUsersConnectionRepository 였는데, 이것이
userconnection 이라는 테이블에 소셜키등을 저장한다.
2. 환경설정- 소셜 콘텍스트 17
19. • 애플리케이션콘텍스트 설정이다. 지금까지 설정했던
것들과 properties와 메시지등등을 모두 불러온다.
2. 환경설정- applicationContext 19
20. • 스프링 xml 설정에서 web.xml 에
applicationContext.xml 과 각종
Character설정등등을 해준 기억이 있을 것이다. 그것을
요런 식으로 자바설정을 하더라~~~
2. 환경설정- web.xml 대신.. 20
21. • 자 지금까지 환경설정을 참 많이도 했다.헥헥;;
• 그렇다면 이제 실제 가입과 페이지등을 어떻게 구현할 지
알아보도록 하자~~
• 먼저 로그인 페이지 부터^^
2. 환경설정- 끝^^ 21
22. • 익숙한 컨트롤러와, Jsp 페이지
• Jsp에서 잘 봐야하는 부분은
• isAnonymous()부분(생략됨)이며
• 로그인여부로 페이지가 달라짐.
3. 로그인&가입 - 로그인컨트롤러 22
23. • 익숙한 컨트롤러와, Jsp 페이지
• Jsp에서 잘 봐야하는 부분은
• isAnonymous()부분(생략됨)이며
• 로그인여부로 페이지가 달라짐.
3. 로그인&가입 - 로그인컨트롤러 23
24. • 자 일단 만들면, 이런 식의 페이지가 보여질 것이다.
• 설정하느라 힘들었는데 여기서 뭔가 뿌듯함이 느껴졌지만 회원가입이
안됐다. 회원가입을 구현해보자!
3. 로그인&가입 - 로그인컨트롤러 24
25. • 회원가입을 위한 DTO객체 RegistrantionForm 이다.
• 웹 계층에서 받아서 데이터를 전송(Data transfer) 데 쓰인다.
• 검증도 하게 되는데
• 자세한 설명은 블로그글
을 보면 되겠다~
지금은 흐름만~
3. 로그인&가입 - DTO 25
26. • 자 이제 소셜과는 약간 다른 내용인 폼
검증을 위한 클래스들을 얘기한다.
• 다음 패키지의 메타인터페이스에 대한 설명이 나오기 시작한다.
메타인터페이스를 만드는 방법은 블로그글에 참고
• 요런 식으로 검증
인터페이스를 만들었다~
• PasswordsNotEqual은
생략
3. 로그인&가입 – 유효성 검증 26
27. • 검증하는 클래스를 만들었다. ConstraintValidator 를 구현해서
초기화시킨후에 검증하는 과정을 거쳐 boolean 값으로 리턴함.
• 소셜+시큐리티가 주 목적이므로 검증은 패스패스;;
3. 로그인&가입 – 유효성 검증 27
28. • 인증에러를 넣어주기 위한 ValidationUtil 클래스.
첫번째 필드는 에러를 넣어주는 것이고,
두번째 필드는 리플렉션을 이용하여서 필드의 값을 얻는 것이다.
• 유효성 검증은 이정도로 하고, 등록 페이지 컨트롤러로 가보자(유효성
검증 조금 토나와..ㅠㅠ)
3. 로그인&가입 – 유효성 검증 28
29. • 등록페이지를 만드는 데도 일반 등록과 함께 소셜등록을 염두에 둬야 한다. 소셜을 통한 등록일
경우 model에 DTO로서, registration 이 포함되어있는 구조이다.
소셜코넥션을 받아서
DTO로 변환. 코넥션이
없으면 빈 객체
3. 로그인&가입 – 등록페이지 29
30. • 앞서에서 model 에 registration 을 addAttribute 하였다. Registration 에
signInProvider의 유무에 따라 다음과 같이 페이지가 변하게 된다.
3. 로그인&가입 – jsp 가입폼 30
31. • 회원가입 페이지의 이 부분을 살펴보면 된다.
3. 로그인&가입 – jsp 가입폼 31
32. • 가입처리하는 POST 부분이다. 가입 처리가 되는 부분은 createUserAccount 부분인데,
service 를 @autowired 받은 것에서 가입처리를 한다. 실제로 돌아가는 서비스 클래스는
RepositoryUserService 이며 이전에 만들었다. 다음 슬라이드에서 어떤 구조인지 나온다.
• 아 그리고 SecurityUtil의 LogInUser도 잘 봐야 한다. 가입후 로그인시켜주는 기능이다.
3. 로그인&가입 – 가입처리 32
33. • 대략 이런 구조이다. RegistraionForm(DTO) 가 User로 변경된다.
3. 로그인&가입 – 가입처리 33
34. • 여기사 시큐리티유틸의 로그인해주는 부분이다. User를 받아서 로그인을 하는 기능이 구현되어있는
ExampleUserDetails 로 변환을 해서 로그인을 한다. 처음에 UserDetails 와
SocialUserDetails 가 들어있는 SocialUser 클래스를 상속했던 것을 기억하자.
3. 로그인&가입 – 가입처리 후 로그인 34
35. • Db에 저장되는 용도로 쓰이는 엔티티. 모델 User 이다. DTO 와 UserDetails 클래스의 중간에
있다고나 할까.. 자세한 설명은 생략. 블로그글 참조.;
3. 로그인&가입 – user 모델 35
36. • 참조한 외국의 블로그 본 글에 순서가 이렇게 되어있어서 적는다. 서비스와 리파지토리
3. 로그인&가입 – 서비스 36
37. • 에 .. 뭔가 그냥 내가 블로그글을 보면서 정리하는 식으로 만들어봤는데,
내가 시큐리티, 자바설정, 소셜등에 익숙치 않은 상태,
큰 그림이 없는 상태에서 블로그글을 처음 접했을 때 당장에 이해가 확 되지 않던
것처럼 이 글도 처음 접하는 사람에게는 뭔가 .. @_@ 이러한 느낌이 오지 않을까
싶다.
• 다시 한번 패키지의 구조들을 떠올려보면서, 어디어디에 필요했던 건지 생각을
해봐야겠다.
• 그러니까 중요했던 것은 크게 설정 후 로그인 페이지 구현
가입처리 페이지 구현, 가입구현, 폼 검증등을 했었다.
• 시큐리티에 의해서 자동으로 요러한 주소(밑에)들이 리퀘스트 매핑된다.
• /login/authenticate 로그인 과정은 이러한 주소가 자동으로 시큐리티에 의해
생기고, 시큐리티가 필요로 하는 UserDetails 서비스 관련
인터페이스를(RepositoryUserDetailsService 를 보자) 구현함으로써
컨트롤러를 딱히 만들지 않아도 자동으로 구현이 되었다.
4. 정리- 궁시렁.. 37
38. • 가입하는 과정은 시큐리티가 정한 주소를 다시 리퀘스트매핑 하여서 처리하였다.
폼등록시 GET 과정과 POST 과정을 눈여겨보자
– SignUpController 에서 RegistrationController 로 가고, 소셜 기능이 중간중간에
섞여서 ProviderSignInUtils 나타났던 것을 기억하자.
아... 지금 저는 이해가 많이 된 편이라, 쉽게 적는데 보는 분도 쉽게 이해하시길-_-;
나름 뭔가 처음으로 소스분석을 해봐서 뜻깊네요.
홈페이지에 소셜기능 많이많이 생기길^^
4. 정리 38
40. ------
------
페북 : https://fb.com/me.adunhansa
트위터 : https://twitter.com/arahansa
블로그: http://adunhansa.tistory.com/
arahansa 40
출처
Petri Kainulainen 은 소프트웨어 개발과 지속적향상에 열정과 관심을 가지고 있으며
스프링 프레임워크의 전문가이자, Spring Data Book 의 저자이기도 합니다.
이 링크로 가시면 그의 블로그로 가실 수 있습니다. http://www.petrikainulainen.net/
스프링 참고 원글 : http://www.petrikainulainen.net/programming/spring-framework/
adding-social-sign-in-to-a-spring-mvc-web-application-configuration/