묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
생성한 변수 hm 미사용 & 미치는 영향
스프링 MVC 2편 중 섹션 7. 로그인 처리2 - 필터, 인터셉터의 '스프링 인터셉터 - 요청 로그' 강의 11:09쯤에 코드 중 다음과 같은 코드가 있는데요. if(handler instanceof HandlerMethod){HandlerMethod hm = (HandlerMethod) handler;}위와 같이 만든 hm이라는 변수를 사용하지 않는데 만드는 이유가 뭔지, 왜 캐스팅해서 무엇을 보여주고자 하는지 모르겠습니다.바로 밑에 로그에 출력하는 handler에 영향을 주나요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
인터셉터 호출 시점 관련 질문입니다.
안녕하세요. 강의를 들으면서 아래와 같이 2개의 Interceptor 구현을 진행하였습니다. ArgumentResolver를 상속받아 구현한 [LoginMemberArgumentResolver]와 HandlerIntercep를 상속받은 [LoginInterceptor]중 [LoginInterceptor]의 preHandler -> [LoginMemberArgumentResolver]클래스 -> PostHandle -> afterCompletion 순서로 실행되는 것으로 확인됩니다. 이렇게 실행시점에 차이가 있는 것에 대해 질문드립니다. WebConfig.java에서 LoginInterceptor order(1)로 설정되어 있어 먼저 실행되고, 이후 preHandle의 리턴 값 true에 의하여 LoginMemberArgumentResolver가 실행되는 것일까요-? 확인 후 답변 부탁드립니다. 감사합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
안녕하세요. 스프링 로그인 유지 관련 질문입니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예/2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용] - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술을 들은 학생입니다. 이번에 스프링 인터셉터 - 인증 체크를 듣고 개발을 해보았는데요.김영한 강사님께서 만드신 로그인 세션 기능은 유저 한명일 때 잘 작동하는 것은 알 수 있는데, 궁금한 점은 유저가 여러명일 때는 작동이 잘되는가 라는 점입니다.세션은 서버의 메모리상에서 공유되는데 if( session == null || session.getAttrivute(SessionConst.LOGIN_MEMBER) == null ) .... 위와 같은 코드 부분에서 session이 있다고 하더라도 만약 다른 유저가 이미 로그인 되어 있다면(로그인을 했다면), session과 세션의 SessionConst.LOGIN_MEMBER 키에 대한 값은 이미 존재합니다.따라서 저는 이번에 예시로 작성해주신 로그인 세션 유지 기능이 유저 한명이 일 때만 작동한다고 생각합니다. 아직 제가 많이 부족하고 많이 모자랍니다. 나쁜 의도로 질문한 것이 아니라 너무 궁금하고 아무리 찾아봐도 모두 강사님처럼 코딩을 하셔서 질문남겨봅니다. 항사 강사님께서 쉽고 친절하게 설명해주신 덕분에 쉽게쉽게 스프링을 이해하고 잘 배워갑니다. 감사합니다.
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
로그인 → 상품 목록 화면으로 이동할 때 LoginCheckInterceptor가 어느 구간에서 실행되는 것인지 질문이 있습니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/)[질문 내용]여기에 질문 내용을 남겨주세요. 로그인 처리 2 - 필터, 인터셉터 스프링 인터셉터 - 인증체크 수업과정에서 질문이 있습니다. 로그인 화면 현재 로그인 화면에서 상품 목록 화면으로 이동하는 상태 입니다. 현재 로그 출력으로는 이와 같이 됩니다. 궁금한 점으로는 로그인 -> 상품 목혹 화면으로 이동할 때 (위 사진과 같이) - `LogInterceptor/preHandle`가 실행된 후 - `h.l.w.interceptor.LoginCheckInterceptor : 인증 체크 인터셉터 실행 /items` 이 실행되고 - `LogInterceptro postHandle`이 실행이 됩니다. 이때 `LoginCheckInterceptor`가 인터셉터 호출 흐름에서 언제 호출된 것인지 궁금함에 두 가지 질문을 적게 되었습니다. (1) 스프링 인터셉터 호출 흐름을 기준으로 본다면 (수업 ppt에 있는 사진 입니다. 삭제 요청시 삭제하겠습니다.) => 2. handler -> 3. modelandview 반환 과정에서 `LoginCheckInterceptor` 가 실행된 것인지 궁금합니다. (2) 스프링 인터셉터 체인 과정을 보았을 때를 기준으로 본다면 HTTP 요청 → WAS → 필터 → 서블릿 → 인터셉터1 → 인터셉터2 → 컨트롤러 제가 이해한 것으로는 HTTP 요청을 보고 → WAS에서 `registry.addInterceptor` 중 하나를 선택하고 → 필터 적용 → 서블릿 → 인터셉터(여기서 WAS에서 선택된 order를 기준으로 실행이되어) → 컨트롤러 이와 같이 실행되는 것이 맞는걸까요?
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
어플리케이션 로직이 필요한 검증의 분리
안녕하세요. 항상 강의 너무 잘 듣고 있습니다! 개인 프로젝트로 질문/답변 게시판 웹사이트 구현을 진행하고 있습니다. 대부분의 로직에 질문/답변 요청의 작성자임을 확인하는 로직이 필요한데 해당 검증 로직은 필연적으로 어플리케이션(DB단 까지)로직이 필요합니다. 제 생각에 검증기validator 클래스를 도입하는 것 보다 Filter나 인터셉터를 활용하는 방식이 좋아보이는데 맞을까요?? 현재 코드는 아래와 같습니다. 게시글의 수정페이지에 대한 Get매핑과 수정하는 PostMapping입니다. Post - 게시글, Account - 계정(작성자) @GetMapping("qna/edit/{postId}")public String PostEditForm(@PathVariable Long postId, Model model){ //사용자 검증 if(!isValidEditRequest(postId)){ return "denied"; } Post post = postService.findById(postId); model.addAttribute("post",post); return "qna/edit";}@PostMapping("qna/edit/{postId}")public String PostEdit(@PathVariable Long postId, PostDto postDto){ //사용자 검증 if(!isValidEditRequest(postId)){ return "denied"; } //수정 postService.edit(postId,postDto); //수정 후 수정된 게시글로 이동 return "redirect:/qna/show/"+postId;}private boolean isValidEditRequest(Long postId) { return postService.isWrittenBy(postId, getAccount().getId());} 질문은 아래와 같습니다. 1. Validator, Filter, Interceptor가 service를 참조해도 괜찮을까요? 2. 해당 로직을 처리하는 정형화된 방식이 Spring Security에 있을까요?? 감사합니다!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
인터셉터 예외 경로 /aaa , /aaa/ 차이
안녕하세요~ 7강. 인터셉터 부분 복습 중 문의 드립니다. 아래 강의 소스 중 excludePathPatterns 을 적용한 이후 소스를 수정하면서 이것 저것 테스트 해 보는 중 http://localhost:8080/error/ 와 같이 뒤에 슬래쉬(/)가 붙는 경우 인터셉터 예외가 적용되질 않아, 인터셉트 함수를 타는 것 같습니다. 보통 뒤의 슬래쉬는 붙지 않는다고 생각하고 개발하면 되나요? 실무에서도 뒤에 붙는 슬래쉬까지는 고려하지 않고 개발하는지도 궁금합니다. @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new LogInterceptor()) .order(1) .addPathPatterns("/**") .excludePathPatterns("/css/**", "/*.ico", "/error"); }
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
인터셉터 활용법에 대해 질문 드립니다...
우선 제가 백엔드와 프론트를 따로 개발하는 중 입니다. 프론트 개발자가 바디에 값을 넣어서 보낼때, 모든 값들이 전부 스트링으로 넣어야 한다고 합니다... 근데 제가 엔티티 작성시, 숫자인지 최대 최소 등의 유효성 검사를 넣어뒀는데, 스트링일시 숫자가 아니라고 판단해서 문제입니다. 유효성 검사에 들어가기전에 가로채서 타입캐스팅을 먼저 해주고 싶은데, 혹시 인터셉터로 가능할까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
addInterceptors() 는 어떻게 인터셉터를 등록하는건가요?
김영한 강사님 항상 좋은 강의해주셔서 감사합니다! 인터셉터는 정확히 어떻게 등록되는 건가요? 설정파일에 WebMvcConfigurer을 구현해주고 addInterceptors() 메서드를 오버라이딩 해주기만 하면 알아서 인터셉터가 등록되는 건가요???... 인터셉터가 어떤 식으로 등록이 되는지 궁금합니다ㅠㅠ
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
스프링 웹 프로젝트에서 서블릿 필터, 인터셉터, AOP가 선언된 경우 AOP가 동작하는 시점에 대한 질문입니다.
안녕하세요. 스프링 MVC Part.2 강좌에서 필터와 인터셉터를 배우고나서, 서블릿 필터, 스프링 인터셉터, AOP가 모두 선언이 되어 있는 경우 AOP가 동작하는 시점에 대해 질문을 드리고자 글을 남깁니다. [강의 자료에서 가져온 필터, 인터셉터의 동작 과정] HTTP 요청 -> WAS -> 필터 -> 서블릿(디스패처 서블릿) -> 스프링 인터셉터 -> 컨트롤러 동작 과정을 보다가 문득 든 생각입니다. '그럼 AOP는 어느 구간에서 요청을 캐치해서 동작하는거지?' 예를 들어, 공통 관심 사항(메소드 실행시간 체크)을 처리하는 AOP를 @Around(핵심 기능 실행 전/후 동작)로 선언했다면 AOP가 동작하는 과정은 아래 과정이 맞을까요? HTTP 요청 -> WAS -> 필터 -> 서블릿(디스패처 서블릿) -> 스프링 인터셉터 -> AOP -> 컨트롤러 무조건 위 과정이 맞는지 아니면 공통 관심 사항을 적용하는 방법(메소드 실행 전, 후, 전+후)에 따라 바뀌는지 궁금합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
인터셉터 대신 필터를 사용해야되는 특별한 상황이 어떤 상황인지 궁금합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.