Spring/MVC 2편11 로그인 처리2 - 필터, 인터셉터 공통 관심 사항 로그인 한 사용자만 상품 관리 페이지에 들어갈 수 있어야 한다. 문제는 로그인 하지 않은 사용자도 다음 URL을 직접 호출하면 상품 관리 화면에 들어갈 수 있다는 점이다. 애플리케이션 여러 로직에서 공통으로 관심이 있는 있는 것을 공통 관심사(cross-cutting concern)라고 한다. ex) 등록, 수정, 삭제, 조회 서블릿 필터 필터 흐름 (서블릿 = 디스패처 서블릿) HTTP 요청 ->WAS-> 필터 -> 서블릿 -> 컨트롤러 필터 제한 HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 컨트롤러 //로그인 사용자 HTTP 요청 -> WAS -> 필터(적절하지 않은 요청이라 판단, 서블릿 호출X) //비 로그인 사용자 필터 체인 HTTP 요청 ->WAS-> 필터1-> 필터.. 2023. 8. 7. 로그인 처리1 - 쿠키, 세션 로그인 처리하기 - 쿠키 사용 로그인 상태 유지하기 쿼리 파라미터를 계속 유지하면서 보내는 것은 매우 어렵고 번거로운 작업이다. 서버에서 로그인에 성공하면 HTTP 응답에 쿠키를 담아서 브라우저에 전달. 브라우저는 앞으로 해당 쿠키를 지속해서 보내준다. 쿠키의 종류 영속 쿠키: 만료 날짜를 입력하면 해당 날짜까지 유지 세션 쿠키: 만료 날짜를 생략하면 브라우저 종료시 까지만 유지 LoginController @PostMapping("/login") public String login(@Valid @ModelAttribute LoginForm form, BindingResult bindingResult, HttpServletResponse response) { if (bindingResult.hasErro.. 2023. 8. 7. 검증2 - Bean Validation Bean Validation 이란? 먼저 Bean Validation은 특정한 구현체가 아니라 Bean Validation 2.0(JSR-380)이라는 기술 표준이다. 쉽게 이야기해서 검증 애노테이션과 여러 인터페이스의 모음이다. Bean Validation을 구현한 기술중에 일반적으로 사용하는 구현체는 하이버네이트 Validator이다. 이름이 하이버네이트가 붙어서 그렇지 ORM과는 관련이 없다. ◎ 하이버네이트 Validator 관련 링크 공식 사이트: http://hibernate.org/validator/ 공식 메뉴얼: https://docs.jboss.org/hibernate/validator/6.2/reference/en-US/html_single/ 검증 애노테이션 모음: https://doc.. 2023. 8. 7. 검증1 - Validation 컨트롤러의 중요한 역할중 하나는 HTTP 요청이 정상인지 검증하는 것. ◎ 참고: 클라이언트 검증, 서버 검증 클라이언트 검증은 조작할 수 있으므로 보안에 취약하다. 서버만으로 검증하면, 즉각적인 고객 사용성이 부족해진다. 둘을 적절히 섞어서 사용하되, 최종적으로 서버 검증은 필수 API 방식을 사용하면 API 스펙을 잘 정의해서 검증 오류를 API 응답 결과에 잘 남겨주어야 함 글로벌 오류 메시지 전체 오류 메시지 오류 메시지는 errors 에 내용이 있을 때만 출력하면 된다. 타임리프의 th:if 를 사용하면 조건에 만족할 때만 해당 HTML 태그를 출력할 수 있다. ◎ 참고 Safe Navigation Operator errors?. 은 errors 가 null 일때 NullPointerExcept.. 2023. 8. 6. 이전 1 2 3 다음