티스토리 뷰
문제
로그인을 했을경우, 이미 인증을 받았기에 필터와 인터셉트가 걸러주지 못하는 문제 발견
/members/test -> /members/admin (이동 가능)
문제의 코드
- session의 null 체크만 하고, 로그인 계정에 대한 인증 로직이 추가되지 않음
- 위의 문제가 발생한 원인
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String requestURI = request.getRequestURI();
Pattern pattern = Pattern.compile("/members/([^/]+)");
Matcher matcher = pattern.matcher(requestURI);
log.info("인증 체크 인터셉트 실행 {}", requestURI);
HttpSession session = request.getSession(false);
if(session == null || session.getAttribute(SessionConst.LOGIN_MEMBER) == null) {
log.info("미인증 사용자 요청");
response.sendRedirect("/members/login?redirectURI=" + requestURI);
return false;
}
return true;
}
수정된 코드
- account 계정을 url에서 파싱한 후에, session에 저장되어있는 아이디와 매칭
- 없으면, /members/login으로 이동
- 주의할점)
- url 매칭을 두번째 섹션에 계정명을 사용해야한다
- ex) memebers/[계정명]
- 만약에 다른 url로 설정할경우, 인터셉트에 의해서 로그인화면으로 돌아가는 이슈가 존재할 수 있다 (* 이부분은 차후에 생각..)
- url 매칭을 두번째 섹션에 계정명을 사용해야한다
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String requestURI = request.getRequestURI();
Pattern pattern = Pattern.compile("/members/([^/]+)");
Matcher matcher = pattern.matcher(requestURI);
log.info("인증 체크 인터셉트 실행 {}", requestURI);
HttpSession session = request.getSession(false);
if(session == null || session.getAttribute(SessionConst.LOGIN_MEMBER) == null) {
log.info("미인증 사용자 요청");
response.sendRedirect("/members/login?redirectURI=" + requestURI);
return false;
}else if(matcher.find()){
String account = matcher.group(1);
Member authAccount = (Member) session.getAttribute(SessionConst.LOGIN_MEMBER);
if (authAccount.getLoginId() == null || !authAccount.getLoginId().equals(account)){
response.sendRedirect("/members/login?redirectURI="+requestURI);
log.info("Session loginId: {}, URL account: {}", authAccount.getLoginId(), account);
return false;
}
}else{
response.sendRedirect("/errors/custom/404");
log.info("Not matcher loginId, Error 404!");
return false;
}
return true;
}
'프로젝트 > 게시판 프로젝트' 카테고리의 다른 글
[기능구현#4] 예외처리 (0) | 2024.11.20 |
---|---|
[기능구현#3] 로그인 기능 (0) | 2024.11.20 |
[트러블 슈팅]정상적인 update() 불가 (@InitBinder) (0) | 2024.10.23 |
[기능구현#2] 스프링 검증 어노테이션 생성 (Spring bean validation) (0) | 2024.10.23 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 티스토리챌린지
- 오블완
- 클래스
- 우선순위 큐
- HTML5
- 게시판
- 타입변환
- 포트폴리오
- 정렬
- 예외처리
- 백준
- 기술면접
- Spring
- Java
- db
- 게시판 프로젝트
- Thymeleaf
- 깊이우선탐색
- 버블정렬
- stack
- bean
- JDBC
- 알고리즘
- BFS
- SQL
- 코딩테스트
- 이진탐색
- DFS
- JSON
- 검증
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함