Skip to content

Commit 52970dd

Browse files
committed
feat: CustomLogoutFilter 구현
- 로그아웃 요청 발생 시 catch 하여 토큰 만료 처리 진행
1 parent 59faf83 commit 52970dd

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package dmu.dasom.api.global.auth.filter;
2+
3+
import dmu.dasom.api.global.auth.jwt.JwtUtil;
4+
import jakarta.servlet.FilterChain;
5+
import jakarta.servlet.ServletException;
6+
import jakarta.servlet.http.HttpServletRequest;
7+
import jakarta.servlet.http.HttpServletResponse;
8+
import lombok.RequiredArgsConstructor;
9+
import org.springframework.http.HttpMethod;
10+
import org.springframework.http.HttpStatus;
11+
import org.springframework.security.core.context.SecurityContextHolder;
12+
import org.springframework.stereotype.Component;
13+
import org.springframework.web.filter.OncePerRequestFilter;
14+
15+
import java.io.IOException;
16+
17+
@Component
18+
@RequiredArgsConstructor
19+
public class CustomLogoutFilter extends OncePerRequestFilter {
20+
21+
private static final String LOGOUT_URI = "/api/auth/logout";
22+
23+
private final JwtUtil jwtUtil;
24+
25+
@Override
26+
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
27+
// 로그아웃 요청 검증
28+
if (request.getRequestURI().equals(LOGOUT_URI) && request.getMethod().equals(HttpMethod.POST.name()) && SecurityContextHolder.getContext().getAuthentication() != null) {
29+
// 로그아웃 요청 시 토큰 만료 처리
30+
jwtUtil.blacklistTokens(SecurityContextHolder.getContext().getAuthentication().getName());
31+
response.setStatus(HttpStatus.OK.value());
32+
return;
33+
}
34+
35+
filterChain.doFilter(request, response);
36+
}
37+
38+
}

0 commit comments

Comments
 (0)