Login 관련 코드 수정
•
Login API 코드입니다.
WebSecurityConfig
1.(86-91) // 로그아웃 추가
http.logout(logout -> {
logout.logoutRequestMatcher(new AntPathRequestMatcher("/api/auth/logout"));
logout.logoutSuccessUrl("/api/auth/login");
logout.invalidateHttpSession(true);
logout.deleteCookies("JSESSIONID");
});
2.(70-75) // 인증처리 수정
.requestMatchers("/api/auth/**").permitAll() // '/api/auth/'로 시작하는 요청 모두 접근 허가 > 회원가입, 로그인
// 메뉴 조회는 누구나 접근 / 카페도 추후 추가
.requestMatchers(HttpMethod.GET, "/api/menus").permitAll()
.requestMatchers(HttpMethod.GET, "/api/menus/{id}").permitAll()
.anyRequest().authenticated() // 그 외 모든 요청 인증처리
JwtUtil
1. addCookie 추가
2. getTokenFromRequest 추가 ->기존 헤더 , 쿠키에서 가져오기 위해서
JwtAuthenticatinoFIlter
1.(60-65) // 쿠키 -> 이메일로 만들기 , 헤더 x , 쿠키에 담기
String email = ((UserDetailsImpl) authResult.getPrincipal()).getUser().getEmail(); // username -> email
UserRoleEnum role = ((UserDetailsImpl) authResult.getPrincipal()).getUser().getRole();
String token = jwtUtil.createToken(email, role); // username -> email
// response.addHeader(JwtUtil.AUTHORIZATION_HEADER, token); // 헤더에 담기
jwtUtil.addJwtToCookie(token, response); // 쿠키에 담기
JwtAuthorization
1.(106~119) // uwernaem -> emial로 변경 , 그에 따른 userdeatailsServiceImple 수정
// 인증 처리
public void setAuthentication(String email) {
SecurityContext context = SecurityContextHolder.createEmptyContext();
Authentication authentication = createAuthentication(email);
context.setAuthentication(authentication);
SecurityContextHolder.setContext(context);
}
// 인증 객체 생성
private Authentication createAuthentication(String email) {
UserDetails userDetails = userDetailsService.loadUserByUsername(email);
return new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());
}
}
Java
복사
리뷰내용
Codes
Java
복사
질문
•
질문