WebSecurityConfig
@Bean // 필터
public JwtAuthorizationFilter jwtAuthorizationFilter() {
return new JwtAuthorizationFilter(jwtUtil, userDetailsService, objectMapper);
}
-> 저기서 objectMapper를 왜 넣어주는 건지 궁금해서 10분동안 뒤적뒤적 했는데 그냥 생성자로 주입해주는 거 같다
@RequiredArgsConstructor
public class JwtAuthorizationFilter extends OncePerRequestFilter {
private final JwtUtil jwtUtil;
private final UserDetailsService userDetailsService;
private final ObjectMapper objectMapper;
JwtAuthorizationFilter
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
String token = jwtUtil.getTokenFromRequest(request);
if (Objects.nonNull(token)) {
if (jwtUtil.validateToken(token)) {
Claims info = jwtUtil.getUserInfoFromToken(token);
// 인증정보에 유저정보(username) 넣기
// username -> user 조회
String username = info.getSubject();
SecurityContext context = SecurityContextHolder.createEmptyContext();
// -> userDetails 에 담고
UserDetailsImpl userDetails = userDetailsService.getUserDetails(username);
// -> authentication의 principal 에 담고
Authentication authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());
// -> securityContent 에 담고
context.setAuthentication(authentication);
// -> SecurityContextHolder 에 담고
SecurityContextHolder.setContext(context);
// -> 이제 @AuthenticationPrincipal 로 조회할 수 있음
ApiResponse<Void> responseDto = new ApiResponse<>(HttpStatus.OK.value(), "인증 완료");
response.setStatus(HttpServletResponse.SC_ACCEPTED);
response.setContentType("application/json; charset=UTF-8");
response.getWriter().write(objectMapper.writeValueAsString(responseDto));
return;
} else {
// 인증정보가 존재하지 않을때
ApiResponse<Void> responseDto = new ApiResponse<>(HttpStatus.BAD_REQUEST.value(), "토큰이 유효하지 않음");
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
response.setContentType("application/json; charset=UTF-8");
response.getWriter().write(objectMapper.writeValueAsString(responseDto));
return;
}
}
filterChain.doFilter(request, response);
}
이거 작성하면서
⭐Response에 객체 만들어서 딸려보내는 방법을 알게되었다
ApiResponse<Void> responseDto = new ApiResponse<>(HttpStatus.BAD_REQUEST.value(), "토큰이 유효하지 않음");
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
response.setContentType("application/json; charset=UTF-8");
response.getWriter().write(objectMapper.writeValueAsString(responseDto));
return;
->
그리고 else말고 if에 들어있는 저 부분은 나중에 controller 리턴값이 똑바로 반환되지 않고 자꾸 저거만 나와서 빼버림
⭐String이 Char을 포함하는지 아는법
skip.contains(String.valueOf(temp)
⭐HashMap의 getOrDefault
int result = map.getOrDefault(target,-1);
⭐List 의 정렬
list.sort((s1, s2) -> s2.compareTo(s1)); // 리스트에 있는 값을 내림차순으로 정렬
⭐String끼리 +연산 하는게 상당히 느리기 때문에 Stringbuilder로 만들고 .append()를 해줄것!
'Bin > 개발일지' 카테고리의 다른 글
2023-12-18, Today I Leanred (0) | 2023.12.18 |
---|---|
2023-12-15, Today I Learned (0) | 2023.12.15 |
2023-12-12, Today I Learned (0) | 2023.12.12 |
2023-12-11, Today I Learned (0) | 2023.12.11 |
2023-12-08, Today I Learned (1) | 2023.12.08 |