Intro프로젝트 진행 중 순수 액세스 토큰만으로 로그인 및 로그아웃, 회원가입을 구현했더니액세스 토큰이 만료된 시점에서 갑자기 JWT 토큰이 만료됐다면서 모든 기능이 마비됐었다.인터넷 쿠키, 캐시 삭제도 해보고, DB를 싹 비워봐도 해결이 안 되길래 찾아 봤더니액세스 토큰만으로 이 기능들을 구현하기엔 불안정하다고 하더라.구체적으론 보안, 안정성, 사용자 경험 면에서 어려움이 있다고 한다.그래서 리프레시 토큰을 사용해서 액세스 토큰을 갱신하는 방식으로 진행했다.(문제 원인은 토큰 만료 후 후처리를 제대로 하지 않은 것 같다..)Refresh Token을 사용하는 이유액세스 토큰의 짧은 만료 시간 보완 ➡ 액세스 토큰은 보안 강화를 위해 짧은 만료 시간을 가진다. 사용자 입장에선 매우 불편하다. ..
에러가 발생한 메서드인 addOrderItems() 부분을 확인해 보았다. private List orderItems = new ArrayList();public void addOrderItem(OrderItem orderItem) { orderItems.add(orderItem); //NullPointerException orderItem.setOrder(this);}orderItems는 List 형태이다.Builder 패턴에서 List 필드의 기본 값이 null인 것이 생각나 메서드에서 다시 한 번 값을 초기화해봤다. public void addOrderItem(OrderItem orderItem) { orderItems = new ArrayList(); //초기화 order..
오류 상황DB에 manager, admin 권한 설정을 저장한 후 해당 회원 계정으로 로그인을 했는데, 각각 manager, admin 전용 페이지에 연결되지 않고 403 오류가 발생하였다. SecurityConfig 코드를 확인해 보았다. //권한 부여http.authorizeHttpRequests(authorize -> { authorize .requestMatchers("/user/**").authenticated() .requestMatchers("/manager/**").hasAnyRole("hasRole('ROLE_MANAGER') or hasRole('ROLE_ADMIN')") .requestMatchers("/admin/**..