Skip to content

Commit

Permalink
Merge pull request #151 from eod940/053-REFACTOR-TOKEN-SERVICE
Browse files Browse the repository at this point in the history
053 refactor token service
  • Loading branch information
eod940 committed Apr 18, 2024
2 parents b288a41 + 1238d5a commit 6c49fef
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 18 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.valuewith.tweaver.commons.security;

import com.valuewith.tweaver.constants.ErrorCode;
import com.valuewith.tweaver.exception.CustomAuthException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
Expand All @@ -15,18 +17,22 @@ public class JwtAuthEntryPoint implements AuthenticationEntryPoint {

private final HandlerExceptionResolver resolver;

public JwtAuthEntryPoint(@Qualifier("handlerExceptionResolver") HandlerExceptionResolver resolver) {
public JwtAuthEntryPoint(
@Qualifier("handlerExceptionResolver") HandlerExceptionResolver resolver) {
this.resolver = resolver;
}

@Override
public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) {
public void commence(HttpServletRequest request, HttpServletResponse response,
AuthenticationException authException) {
log.error("resolver - 인증 에러 발생");
try {
resolver.resolveException(request, response, null,
(Exception) request.getAttribute("exception"));
} catch (Exception e) {
response.setStatus(888);
response.setStatus(401);
resolver.resolveException(request, response, null,
new CustomAuthException(ErrorCode.NO_PRINCIPAL));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@

import com.valuewith.tweaver.commons.PrincipalDetails;
import com.valuewith.tweaver.commons.security.service.TokenService;
import com.valuewith.tweaver.constants.ErrorCode;
import com.valuewith.tweaver.exception.CustomAuthException;
import com.valuewith.tweaver.member.entity.Member;
import com.valuewith.tweaver.member.repository.MemberRepository;
import java.io.IOException;
Expand All @@ -18,15 +16,13 @@
import org.springframework.security.core.authority.mapping.GrantedAuthoritiesMapper;
import org.springframework.security.core.authority.mapping.NullAuthoritiesMapper;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.util.ObjectUtils;
import org.springframework.web.filter.OncePerRequestFilter;

@Slf4j
@RequiredArgsConstructor
public class JwtAuthenticationFilter extends OncePerRequestFilter {

public static final String TOKEN_HEADER = "Authorization";
public static final String TOKEN_PREFIX = "Bearer ";

private final TokenService tokenService;
private final MemberRepository memberRepository;
Expand Down Expand Up @@ -58,7 +54,12 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse
AccessToken이 없거나 유효하지 않다면 -> 403
AccessToken이 있고 유효하다면 -> 200
*/
authenticateAccessToken(request);
String headerToken = getAccessTokenFromRequest(request);
if (headerToken == null) {
filterChain.doFilter(request, response);
return;
}
authenticateAccessToken(headerToken);
} catch (Exception e) {
request.setAttribute("exception", e);
}
Expand All @@ -82,21 +83,19 @@ public void reissueAccessTokenAfterRefreshToken(HttpServletResponse response,
);
}

public void authenticateAccessToken(HttpServletRequest request)
throws ServletException, IOException {
String trimmedAccessToken = getAccessTokenFromRequest(request);
public void authenticateAccessToken(String trimmedAccessToken) {
checkTokenValidity(trimmedAccessToken);
String email = tokenService.getMemberEmailForFilter(trimmedAccessToken);
memberRepository.findByEmail(email).ifPresent(this::saveAuthentication);
}

public String getAccessTokenFromRequest(HttpServletRequest request) {
String trimmedToken = tokenService.parseAccessToken(request);
if (trimmedToken == null) {
log.error("authenticateAccessToken: [Nothing] 토큰 없음");
throw new CustomAuthException(ErrorCode.NO_PRINCIPAL); // [100]
String bearerToken = request.getHeader(TOKEN_HEADER);
if (bearerToken == null) {
log.warn("getAccessTokenFromRequest: [Nothing] 토큰 없음");
return null;
}
return trimmedToken;
return tokenService.parseAccessToken(request);
}

private String reissueRefreshToken(Member member) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,8 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti
"/alert",
"/alert/**",
"/users/**",
"/groups/*/list",
"/groups/*/list/{tripGroupId}",
"/groups/**/list",
"/groups/**/list/{tripGroupId}",
"/images/**",
"/member/**",
"/member",
Expand Down

0 comments on commit 6c49fef

Please sign in to comment.