상세 컨텐츠

본문 제목

인증 서블릿 필터

수업 일지/Servlet

by NayC 2021. 5. 29. 01:21

본문

728x90

[서블릿 필터]

상황

- 필터를 만들어서 공통된 사항에 대한건 '집중화'를 시켜줌

- '사용자 인증'에 대한 필터를 생성함

16. ("/*") : 말그대로 모든 url 요청에 대해서 아래 필터 내용을 적용하겠다는 것.

17. implements Filter

19. 다음의 url 주소들을 담고 있는 String 배열을 생성해주었고, 이름을 authRequiredURLs 라고 하겠다.

23. boolean 타입의 required를 반환하는 (25번째줄에 false라고 해주었으므로 즉, false를 반환하는) isAuthRequired 라는 함수를 만들어줌

- 함수의 매개변수가 String url로 되어있지?

이건 어디서 오냐하면 47번째줄에서 가지고 오는거임

예를 들어서 홈페이지에서 url을 보면 'uri'가 있는데 저걸 가지고 온다는 것

즉, 23번째줄에서 uri는 요청받은 페이지의 uri를 의미하는 것. ex) /admin/notice라고 해보자.

27. 만약에 uri가 /member/login으로 시작한다면 -> return false를 하겠다.

- return false를 하겠다는건 isAuthRequired라는 함수를 '아예' 나가는 것을 말함. 즉 37번째줄이 return false가 되는거고 -> 55번째줄이 isAuthRequired(false)가 되어서 -> 반복문을 나가게 되고 65번째 줄로 가게 됨.

- 65번째 줄은 doFilter. 즉 가던길 (/member/login)을 계속 가계해주는 것. (=필터를 통과해서 원래 가던 길을 간다고 생각하면 이해하기 쉽다.)

- 원래 /member로 시작하는건 '인증 필터' 절차를 거치게 해야했는데, 이렇게 일부러 조건식을 넣어주는 이유는 무한 루프에 빠지지 않기 위함임. 로그인 하려고 접근하면? 인증 필터 실행으로 -> 인증하라고 하고 -> 그래서 로그인 하려고 하면? -> 인증하라고 하고... 이걸 막기 위함!

cf) 함수 return 개념을 헷갈려 하는데 기억하기 위해 아래 그림을 남겨둔다.

만약 main 함수가 있고 함수가 쓰여 있으면, 함수 () 자리에 return 되는 값이 들어간다는 것.

(내가 그린 그림(?)ㅎㅎ

30. 이거의 원래 버전은 -> if (uri.startsWith("/admin/") || uri.startsWith("/member/") || ...

-> 이렇게 우리가 인증 필터 해주려는 애들을 다 or로 써줘야 하는 것을 간단하게 반복문으로 고친 것

- 19번째줄에서 authRequiredURLs 이름으로 배열로 담아두었지 ~ 그걸 반복해서는 하나라도 걸리면

32. required 는 boolean 타입이었잖아(true or falase)

-> 반복문 통해서 잡히면(?) required = true가 되는 것임

34. 그리고 if(true)면 -> break;

-> 끝! 55번째줄로 가자! (볼 것도 없어. 넌 인증이야!)

55. isAuthRequired(true)면 아래를 실행

56~57. session(개인 사물함)에 있는 uid를 가져옴

59. 근데 만약 (로그인에서) uid를 안넣어줬다?

60. 로그인 하라고 페이지 보내줌 / 그리고 로그인하면 ReturnURL=+"uri 이렇게 해서 로그인을 했으면 ~ 원래 가려고 했던 곳(처음 uri 들어왔던경로)로 보내줌

61

cf) uid는 어딨었나 하고 헷갈릴 것 같아 사진 추가 (LoginController)

728x90
반응형

'수업 일지 > Servlet' 카테고리의 다른 글

55일차. Servlet 17 - ★CRUD (2)  (0) 2021.05.07
54일차. Servlet 16 - ★CRUD (1)  (0) 2021.05.06
Servlet 페이지들 관계 정리  (0) 2021.05.05
38일차. Servlet 6  (0) 2021.04.13
서버 ↔ 브라우저 요청 정리  (0) 2021.04.12

관련글 더보기