본문 바로가기

웹개발37

스프링 RestTemplate으로 HTTP Get 방식 요청하기 스프링 RestTemplate으로 HTTP Get 방식 요청하기 스프링에는 HTTP 통신을 할 수 있는 여러가지 모듈이 있는데, 그중에 하나가 RestTemplate 이다. RestTemplate org.springframework.web.client 패키지에 존재한다. 이 RestTemplate 클래스를 사용하면 HTTP 요청과 응답이 간단해진다. Get 방식으로 요청 1 - 컨트롤러 RestTemplate을 이용해서 HTTP GET 방식으로 요청하는 로직은 아래와 같다. 먼저 RequestMapping 어노테이션으로 /rest/resttwo 로 요청이 들어오는 Post 방식의 url을 처리하겠다고 작성해준다. 그리고 Post 방식으로 요청할때 넘겨주는 json 형식의 파리미터를 RequestBody .. 2020. 12. 6.
OAuth2 인증 - 인가 코드 그랜트 OAuth2 인증 - 인가 코드 그랜트 지난 포스팅에는 OAuth2 인증 - 암시적 코드 그랜트에 대해서 살펴보았다. 이번 포스팅에는 이어서 인가 코드 그랜트에 대해서 알아보자. OAuth2 인가 코드 그랜트를 이용해서 페이스북 친구 목록 요청 신뢰 클라이언트는 과 같은 기밀정보를 안전하게 저장할 수 있다. 따라서 등록 과정에서 저장할 자격증명을 발급 받는다. 아래는 OAuth2 인가 코드 그랜트를 이용해서 페이스북 친구 목록 요청하는 과정이다. 이번에도 페이스북의 사용자 동의 절차가 포함된다. 인증과정에서 1번-3번은 암시적 코드 그랜트와 과정이 동일하다. 굳앱이 유저를 페이스북으로 연결하고 페이스북은 유저에게 굳앱이 사용자 목록에 접근하는것을 허용할 것인지 물어본다. 사용자가 확인을 했다고 가정하고 .. 2020. 12. 5.
OAuth2 인증 - 암시적 코드 그랜트 OAuth2 인증에 대해서 OAuth2에 대해서 한 문장으로 정의한다면 인증 프로토콜이다. HTTP 통신 프로토콜 처럼 프로토콜이다. 프로토콜은 서로간의 약속이다. HTTP 통신을 할때 보내는 클라이언트, 받는 서버가 데이터를 주고 받을때 이러한 방식으로만 주고 받자고 약속을 해놓은 것 처럼, OAuth2 인증도 마찬가지로 인증이라는 행위를 할 때, 서로서로 우리 이런 방식으로 인증처리 권한 처리를 하자 라고 약속을 해놓은 기술이라고 할 수 있다. OAuth2 인증 종류 OAuth2는 인증을 위한 데이터 교환을 위해서 다양한 방법을 지원한다. 그 인증 방법에 따라서 동작 흐름도 달라진다. OAuth2 인증에서는 그것을 그랜트 유형이라고 부른다. 대표적으로 OAuth2 인증에는 두가지 유형의 그랜트가 있다.. 2020. 12. 5.
스프링 Session 쇼핑몰 방금 본 상품&권한체크 스프링 Session 쇼핑몰 방금 본 상품&권한 지난 시간에는 스프링 session으로 회원가입을 하고, 자동로그인을 코드로 구현해 보았다. 이전 포스팅과 이어지는 포스팅이라서 이전 포스팅을 참고하고 오면 좋을것 같다. 이번 시간에는 회원가입 후 가입한 내용으로 로그인 로직을 구현해보고, 쇼핑몰에서 방금 내가 봤던 상품을 띄워주는 로직과 사장님만 들어갈 수 있는 admin 페이지 비슷한 내용을 만들어 볼려고한다. loginPage 생성 먼저 아래와 같이 로그인 페이지를 생성해준다. login login 회원가입을 아직 안하셨나요? ${msg} UserRepository 유저 조회 UserRepository 클래스에서 유저정보를 찾는 로직을 작성한다. 없으면 없다는 메시지를 전달하기 위해서 Map을 이용해.. 2020. 12. 5.
스프링 Session으로 자동 로그인 구현하기 세션의 개념과 원리 - 몽실이의 아이폰12 구입하기 스프링 세션의 구현 지난 포스팅에서 세션에 대해서 몽실이가 아마존에서 아이폰12를 구입하는 과정을 예로들어서 설명을 했다. 세션이라는 기술이 존재하면, 어떤 편리함이 있는지 글로써 설명을 했다. 이번 포스팅에서는 글로 예시로든 내용을 코드로 구현해보자. 먼저 세션을 이용해서 2가지 문제를 해결하고자 한다. 첫번째로 로그인을 했는데, 창을닫고 다시 들어오면 또 다시 로그인을 해야되는 문제를 해결한다. 즉, 세션을 이용해서 자동로그인을 구현한다. 두번째는 쇼핑하다가 창이 닫혔는데, 방금 보았던 상품이 기억이 안나는 문제를 해결한다. 창을 닫고 들어와도 내가 클릭한 상품을 세션을 이용해서 띄워줄 수 있도록 해보자. 1.프로젝트 생성 스프링 프로젝트로 진행을 .. 2020. 12. 1.
세션의 개념과 단점 세션의 탄생 일상에서 웹브라우저를 열어서 무엇인가를 검색할때 세션이라고 하는 기술을 사용을 한다. 왜 세션이라는 기술을 사용할까? 그 이유는 웹브라우저는 사용자의 상태를 알지 못하기 때문이다. 좀 더 풀어서 말하면 HTTP 프로토콜은 TCP/IP라는 통신을 하는데, 이때 사용자는 어떤 검색어를 검색창에 입력하고 엔터를 누르면 웹브라우저에서 서버로 요청이 발생된다. 그리고 서버에서 응답을 한다. 그리고는 연결이 종료된다. 더 쉽게 예를 들어 보자. 1.몽실이가 아마존 사이트에 회원가입을 하고 로그인을 했다. 2.몽실이는 새아이폰을 구입하려고 아이폰12를 검색했다. 3.이때 아마존 웹사이트 화면에서 아마존 서버로 요청이 발생한다. (www.amazon.com/search?productname=ipone 대략.. 2020. 12. 1.
스프링 Mybatis 로그 이쁘게 출력하기 스프링 Mybatis 로그 이쁘게 출력하기 1.의존성 추가 마이바티스 쿼리 로그를 이쁘게 출력해주는 라이브러리 의존성을 pom.xml 추가해준다. org.lazyluke log4jdbc-remix 0.2.7 2.log4j.xml 수정 log4j.xml 파일 내용을 아래와 같이 작성해 준다. 3.sqlSession.xml 파일 수정 db설정하는 부분을 아래와 같이 변경해준다. 변경된점은 기존의 BasicDataSource Bean 설정태그에서 id를 dataSource 에서 dataSourceSpied로 변경해 주었다. 그리고 새로 추가된 Log4jdbcProxyDataSource 클래스의 bean id를 dataSource로 지정해 주었다. 이 부분을 제외하고 나머지 sqlSessionBean도 참조하는.. 2020. 11. 23.
스프링 시큐리티 인증 예제 (MyBatis MySql 연동) ✅ 시나리오 아래와 같이 총 4개의 페이지가 있다. 먼저 사용자는 웹에 접속하면 login.jsp 페이지를 통해서 로그인 인증을 거쳐야 한다. login.jsp에서 로그인 성공을 하면 top.jsp로 이동된다. 그리고 top.jsp 에서 a 태그를 통해서 user.jsp 또는 admin.jsp 로 이동 할 수 있다. 이 부분은 나중에 인가 관련 기능을 구현하기 위해서 user.jsp, admin.jsp 를 만들었기 때문에 여기서는 중요하지 않다. 여기서 중요한것은 login.jsp와 top.jsp이다. 스프링 시큐리티를 통해서 어떻게 login.jsp를 거쳐서 top.jsp로 갈 수 있는지 살펴보자. -user.jsp 페이지(유저권한페이지) -admin.jsp 페이지(관리자권한 페이지) ✅ 스프링 프로젝.. 2020. 11. 22.
스프링 개발전 Controller Class파일 작성하기 - part2 1.VO 클래스 작성 package sample.customer.biz.domain; import java.util.Date; import javax.validation.constraints.AssertFalse; import javax.validation.constraints.Max; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; import javax.validation.constraints.Pattern; import javax.validation.constraints.Size; import javax.xml.bind.annotation.XmlRootElement; import org.spri.. 2020. 11. 14.