Java - Spring &&n SpringBoot27 SpringSecurity 와 소셜 로그인 : OAuth2, 카카오 로그인, 네이버 로그인 SpringSecurity OAuth2 와 소셜 로그인 - 학원에서 진행했던 파이널 프로젝트에서 내가 담당한 파트!! 이전부터 정리하려고 했으나 채팅하고 이것저것 한다고 미루다가 드디어 해보려고한다. - 이번 글은 추후에 정리할 웹 소켓 채팅 + 소셜 로그인 을 위해 미리 개념과 코드를 정리하기 위한 정리본!! 시큐리티와 session 시큐리티는 /login 주소 요청이 오면 해당 요청을 낚아채서 로그인을 진행시킨다. 로그인 진행이 완료 되면 시큐리티 session 을 만들어준다 ⇒ Security ContextHolder 이때 시큐리티 session 에 들어갈 수 있는 정보는 아래와 같다 Authentication 타입 객체 ⇒ Object 타입 객체 Authentication 타입 객체 안에 User.. Java - Spring &&n SpringBoot 2022. 9. 15. Spring - 예외 상황 처리 1) Servlet 예외 처리 : 404 error, 500 error 1. 서버 예외 처리 서버를 다루면서 다양한 에러를 만나게 된다. 특히나 서버단에서 프로그래밍을 잘못하면 404, 500 등등 엄청나게 다양한 오류를 클라이언트는 마주할 수 밖에 없다. 이때 이런 오류에 맞춰서 오류에 대한 예외처리 - 404 페이지, 500 오류 처리 등 - 을 할 수 있는 방법이 있다. 예외처리는 서블릿으로 예외 처리하는 방법과 스프링 부트를 통해 예외 처리를 하는 방법 2가지가 있다. 2. 웹 어플리케이션의 예외처리 웹 어플리케이션은 사용자 요청별로 별도의 쓰레드가 할당되고 서블릿 컨테이너 안에서 실행된다 이때 에플리케이션 안에서 예외가 발생하고 이를 try ~ catch 로 잡아서 처리하면 아무런 문제가 없다. 2) WAS 가 자체적으로 처리하도록 만들기 : 정확히는 Spring .. Java - Spring &&n SpringBoot 2022. 8. 19. 웹 네트워크 기본 공부 2) HTTP 알아보기 HTTP 란? HyperText Transfer Protocol 무상태 프로토콜이며 비연결성프로토콜이다 ⇒ Stateless && connectionless image, 음성, 영상, 파일 json, xml 등의 api 이외에도 거의 모든 형태의 데이터 전송 가능 데이터 전달에도 거의 HTTP 사용!! 아주 예외적인 경우 아니면 거의 HTTP 사용!! HTTP 는 아주 다양한 버전이 있으나 1.1 버전이 특히 많이 사용된다. 1) HTTP의 특징 : 무상태 프로토콜 - Stateless 서버가 클라이언트의 상태를 보존X 장점 : 서버 확장성이 높다 단점 : 클라이언트가 추가 데이터 전송 Stateful 과 Stateless 의 차이 Stateful : 상태유지 ⇒ 서버가 클라이언트의 상태 유지 상태가 유.. Java - Spring &&n SpringBoot 2022. 8. 17. Spring - ArgumentResolver (feat.커스텀 어노테이션, 세션) 1. ArgumentResolver 개념 및 동작 과정 ArgumentResolver 는 Controller 에서 들어오는 데이터(파라미터)를 가공하여 필요한 데이터만 뽑는 로직이 필요할 때 사용한다. 보통 @ModelAttribute 나 @Param 를 사용해서 이러한 처리를 하게 되는데 문제는 이렇게 받았을 때 내가 필요한 정보만 있는게 아니라 다른 정보가 함께 있어서 추가적으로 데이터를 파싱하여 필요한 정보를 뽑아내는 등 추가 작업이 필요한 경우도 있다. 이를 위해서 사용하는 것이 바로 ArgumentResolver 이다! ArgumentResolver 는 HandlerMethodArgumentResolver 를 구현한 구현 클래스를 사용해서 애플리케이션에 맞는 새로운 Resolver 를 만들고, .. Java - Spring &&n SpringBoot 2022. 8. 17. Spring - 스프링 인터셉터(3) 스프링 인터셉터 개념과 로그 남기기 스프링 인터셉터란? 스프링 인터셉터는 사실상 서블릿 필터와 동일한 기능을 제공한다. 다만 서블릿 필터가 서블릿이 제공하는 기술이라면, 스프링 인터셉터는 스프링MVC 가 제공하는 기술로 적용되는 순서와 범위, 사용방법이 다르다. 스프링 인터셉터를 위해서는 HandlerInterceptor 인터페이스를 구현한다. 또한!! 스프링에서 제공하는 만큼 서블릿 필터보다 더 강력하고 좋다 스프링 인터셉터의 동작 HTTP 요청 → WAS → 필터 → 서블릿 → 스프링 인터셉터 → 컨트롤러 스프링 인터셉터는 디스패쳐 서블릿과 컨트롤러 사이에서 컨트롤러 직전에 호출된다 ⇒ 따라서 서블릿 필터 뒤에 실행된다 스프링 인터셉터는 결국 MVC 에서 제공하는 기능이기 때문에 결국 디스패쳐 서블릿 이후에 등작하게 된다. 이는 스프링.. Java - Spring &&n SpringBoot 2022. 8. 13. Spring - 서블릿 필터 다루기(2) : 로그인 여부 체크, 로그인 여부에 따른 페이지 접근 서블릿 로그인 필터 만들기 로그인을 했을 경우에만 특정한 페이지 접근을 허용하도록 하는 서블릿 필터 whiteList 배열은 로그인 없이 접근 가능한 페이지들를 모아놓은 배열이다. doFilter 에서는 getRequestURI 를 통해서 서버로 요청된 uri 를 확인한다. 확인한 uri 에 대해서 isLoginCheckPath 메서드가 실행되는데 이 메서드를 통해서 해당 uri 가 whiteList - 접근 가능한 uri - 에 해당하는지 여부를 판단한다. 만약 isLoginCheckPath 가 true 를 출력한다면 해당 uri 는 로그인해야만 접근 가능한 uri 로 판정되고 다시 session 을 통해 세션의 null 여부와 session 안에 담긴 값을 조사한다. 즉 whiteList 배열에 속한.. Java - Spring &&n SpringBoot 2022. 8. 12. Spring - 서블릿 필터와 스프링 인터셉터(1) 서블릿필터, 서블릿 필터를 사용한 로그 찍기 스프링 시큐리티와 서블릿 필터 && 스프링 인터셉터 최근 학원에서 파이널 프로젝트를 끝내면서 스프링 시큐리티를 다뤄서 소셜 로그인을 구현한 경험이 있다. 사실 그 당시에는 서블릿 필터도 스프링 인터셉터도 모르고 그저 '구현' 하는데 급급해서 동작 원리나 방법 등을 모르고 그냥 지나쳤다. 웃기게도 그렇게 허겁지겁 만들었던 것도 도움이 되었던건지 이번에 서블릿 필터와 스프링 인터셉터를 공부하면서 오히려 스프링 시큐리티가 어떻게 구현되는지 알 수 있었던 것 같다. 결국 스프링 시큐리티에서 동작하는 여러 기능들 - 로그인 중간에서 인터셉터해서 DB 와 비교하고, 패스워드를 확인하고, 권한을 확인하거나 로그인 여부에 따라서 페이지 이동, 권한 수준에 따른 페이지 접근 등 - 서블릿 필터와 스프링 인터셉터의 기능들.. Java - Spring &&n SpringBoot 2022. 8. 11. Spring Session 다루기 : 세션 정보, 세션 타임 아웃 설정 Session 에 담긴 정보 가져오기 Session 에는 해당 세션의 id, 세션이 살아있을 수 있는 최대 시간, 세션 생성 시간, 마지막 세션 접근 시간 이 있다. 각각 아래와 같이 get 메서드로 해당 내용을 가져올 수 있다. @GetMapping("/session-info") public String sessionInfo(HttpServletRequest req) { HttpSession session = req.getSession(false); if (session == null) { return "세션이 없습니다"; } log.info("sessionId = {}", session.getId()); log.info("getMaxInactiveInterval={}", session.getMaxIn.. Java - Spring &&n SpringBoot 2022. 8. 11. Spring Boot - 회원가입 시 인증 메일 발송(feat.네이버 이메일 연결) 오늘은 학원에서 파이널 프로젝트때 사용했던 사이트 회원 가입 시 인증 메일을 발송하는 부분을 정리해볼까 한다. 당연히 SpringBoot 를 사용하였고, Gradle 을 사용해서 라이브러를 import 하였다. 본 포스티에 사용된 모든 코드는 아래 git 에서 확인 가능합니다 https://github.com/SeJonJ/GoodJob GitHub - SeJonJ/GoodJob: 취업정보 제공 GoobJob 사이트 취업정보 제공 GoobJob 사이트. Contribute to SeJonJ/GoodJob development by creating an account on GitHub. github.com 1. Spring 라이브러리 다운받기 Spring 에서 메일 서버와 연결해서 메일을 보내는 작업을 하는.. Java - Spring &&n SpringBoot 2022. 8. 8. SpringBoot 를 사용한 실시간 아이디 중복 검사(feat.ajax, jsp) https://terianp.tistory.com/95 데이터 전달의 꽃 AJAX 다루기 - JS, JQuery, jsp(feat. 실시간 아이디 중복검사) 사실 ajax 를 몇번인가 사용했는데 이에 대한 정리가 하나도 없다는걸 깨달아서 마음먹고 정리해봤습니다. 순서상 JQuery 를 먼저 정리하고 정리해야하는데 jquery 는 다음 글부터 정리해야할듯ㅠㅠ terianp.tistory.com 이전에 AJAX 를 다루면서 실시간 아이디 실시간 중복 검사 코드를 짜 보았다. 그런데 이전의 코드에서는 살짝 아쉬운? 부족한 점이 보인다. 바로 spring 을 사용하지도 않았고, 오직 JSP 로만 구현했었다는 점이다. 물론 이렇게 구현해도 크게 상관은 없다. 왜냐? 어쨌든 코드는 잘 동작하니까ㅎㅎ 다만 당연히도 .. Java - Spring &&n SpringBoot 2022. 8. 4. Spring MVC 패턴 && dispatcher MVC 패턴이란? MVC 패턴은 모델 2 방식이라고도 불림 Controller : 요청 request 가 들어온 후 Model 에서 만들어진 데이터를 다음에 어디로 넘길지 지정해주는 역할 View : Controller 를 통해 전달받아온 데이터를 클라이언트 화면에 보여주는 역할 Model : 데이터를 만들거나 데이터를 비교하거나 DB 에서 데이터를 가져오는 등 의 작업을 하는 역할 MVC 에 대해서 기억해야하는 것들 Model 과 controller 에서 페이지를 이동할때는 파라미터를 달아서 넘길 수 없음? 따라서 파라미터 대신 setAttr 을 이용해서 내용을 담아서 값을 넘김 Model 은 execute 를 사용함. 이때 execute 는 HttpServletRequest, HttpServletRe.. Java - Spring &&n SpringBoot 2022. 7. 18. Spring Boot && MyBatis without xml : 스프링 부트와 마이 바티스 연동(xml 설정 빼고!) 공부하면서 꼭 조심해야하는 부분! SPRING BOOT 의 경우 CONTROLLER 을 포함한 모든 어노테이션이 달린 패키지들은 @SpringBootApplication 가 달린 클래스가 있는 패키지의 밑에, 즉 기본적으로 가장 먼저 생성되는 클래스 패키지의 밑에 위치해야한다! ⇒ 이거 땜시오류가 잡는데 오래걸렸습니다ㅠ MY BATIS 에서 LIKE 문을 사용하는 경우 DB 종류에 따라서 서로 다른 문법을 사용한다. MySQL SELECT * FROM DEPT WHERE dname like LIKE CONCAT(‘%’, #{dname}, ‘%’) ORACLE SELECT * FROM DEPT WHERE dname like '%'||#{dname}||'%' MS-SQL SELECT * FROM DEPT W.. Java - Spring &&n SpringBoot 2022. 7. 12. 이전 1 2 3 다음 728x90 반응형