inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

querydsl QTodo관련 문의

미해결

코드로 배우는 React 19 with 스프링부트 API서버

안녕하세요. 강의를 듣다가 QTodo 사용하는 시점에서 문제가 발생하여 문의드립니다. gradle 빌드시점에 QTodo 클래스를 생성하는 것 까진 확인을 하였는데 search1 메소드에서 QTodo를 사용하려고 하니 클래스 인식 자체를 못하고 있습니다.(import도 안됨) 강의 내용상으로 봤을 때 build 디렉토리에서 인위적으로 복사한 것 같진 않은데 해당 클래스를 어떻게 import해서 사용해야 할지 몰라서 문의드립니다. springboot 버전은 3.3.10입니다.

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
김종민 댓글 3 좋아요 0 조회수 160

todo list 검색 기능 문의

해결됨

코드로 배우는 React 19 with 스프링부트 API서버

todo list 에서 검색어를 입력하여 검색된 결과를 화면에 출력하려면 어떻게 구현해야 하는지요? 예제에는 이런 것이 없는 거 같은데 제가 대충봐서 잘못 이해하고 있는 건가요? 전체적인 흐름으로 설명해주시면 감사하겠습니다.

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
Link 댓글 2 좋아요 0 조회수 76

JWT와 @PreAuthorize 사용하기에서 권한오류

미해결

코드로 배우는 React 19 with 스프링부트 API서버

동영상 강의에 있는 내용대로 ProductController에서 @GetMapping("/list")에 @PreAuthorize("hasAnyRole('ROLE_USER','ROLE_ADMIN')")를 작성하고나서 postman에 login 후 accessToken을 가져와서 get방식으로 토큰을 넣어서 입력하면 status : 500, "error": Interner Server Error가 뜹니다.. @PreAuthorize부분을 주석처리하고 실행해보면 list값이 잘 나오네요.. 어디부분이 잘못 된걸까요?? 참고로 CustomSecurityConfig클래스에 @EnableMethodSecurity추가도 했습니다. @PreAuthorize("hasAnyRole('ROLE_USER','ROLE_ADMIN')") @GetMapping("/list") public PageResponseDTO<ProductDTO> list(PageRequestDTO pageRequestDTO){ return productService.getList(pageRequestDTO); } 여기가 ProductController 클래스 package org.zerock.apiserver.security.filter; import com.google.gson.Gson; import jakarta.servlet.FilterChain; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.log4j.Log4j2; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.web.filter.OncePerRequestFilter; import org.zerock.apiserver.dto.MemberDTO; import org.zerock.apiserver.util.JWTUtil; import java.io.IOException; import java.io.PrintWriter; import java.util.List; import java.util.Map; @Log4j2 public class JWTCheckFilter extends OncePerRequestFilter { @Override protected boolean shouldNotFilter(HttpServletRequest request) throws ServletException { //true == not check String path = request.getRequestURI(); log.info("------check uri---------"+path); if(path.startsWith("/api/member/")){ return true; } //false == check return false; } @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { log.info("----------------------"); log.info("----------------------"); log.info("----------------------"); String autoHeaderStr = request.getHeader("Authorization"); //bearer // 7개 후 JWT 문자열 try { String accessToken = autoHeaderStr.substring(7); Map<String, Object> claims = JWTUtil.validateToken(accessToken); log.info("JWT claims: " + claims); // filterChain.doFilter(request, response); String email = (String) claims.get("email"); String pw = (String) claims.get("pw"); String nickname = (String) claims.get("nickname"); Boolean social = (Boolean) claims.get("social"); List<String> roleNames = (List<String>) claims.get("roleNames"); MemberDTO memberDTO = new MemberDTO(email, pw, nickname, social.booleanValue(), roleNames); log.info("---------------------------------"); log.info(memberDTO); log.info(memberDTO.getAuthorities()); UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(memberDTO, pw, memberDTO.getAuthorities()); SecurityContextHolder.getContext().setAuthentication(authenticationToken); filterChain.doFilter(request, response); }catch(Exception e){ log.error("JWT Check Error --------------------"); log.error(e.getMessage()); Gson gson = new Gson(); String msg = gson.toJson(Map.of("error", "ERROR_ACCESS_TOKEN")); response.setContentType("application/json"); PrintWriter printWriter = response.getWriter(); printWriter.println(msg); printWriter.close(); } //destination filterChain.doFilter(request, response); } } 여기가 JWTCheckFilter부분입니다.

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
tobot222 댓글 2 좋아요 0 조회수 177

access Token 만료 후 todo/list 접속시도 에러 처리

해결됨

코드로 배우는 React 19 with 스프링부트 API서버

안녕하세요. access Token 정보 만료 후에 서버에서 보내는 메시지가 401 메시지로 옵니다. 그래서인지 jwtUtil.js 파일에서 처리를 못하는 문제가 있는 것이 맞을까요? responseFail 을 아래와 같이 수정하는게 맞는지 무엇을 놓치고 있는 것인지 모르겠습니다. http://localhost:3000/todo/list 를 10분 이상 경과후 실행했을 때 에러 메시지를 출력했었습니다. import axios from "axios"; import {getCookie, setCookie} from "./cookieUtil"; import {API_SERVER_HOST} from "../api/hostApi"; const jwtAxios = axios.create() const refreshJWT = async (accessToken, refreshToken) => { const host = API_SERVER_HOST const header = {headers: {"Authorization": `Bearer ${accessToken}`}} const res = await axios.get(`${host}/api/member/refresh?refreshToken=${refreshToken}`, header) console.log("----------------------") console.log(res.data) return res.data } //before request const beforeReq = (config) => { console.log("before request.............") const memberInfo = getCookie("member") if (!memberInfo) { console.log("Member NOT FOUND") return Promise.reject( { response: { data: {error: "REQUIRE_LOGIN"} } } ) } const {accessToken} = memberInfo // Authorization 헤더 처리 config.headers.Authorization = `Bearer ${accessToken}` return config } //fail request const requestFail = (err) => { console.log("request error............") return Promise.reject(err) } //before return response const beforeRes = async (res) => { console.log("before return response...........") console.log(res) //'ERROR_ACCESS_TOKEN' const data = res.data if (data && data.error === 'ERROR_ACCESS_TOKEN') { const memberCookieValue = getCookie("member") const result = await refreshJWT(memberCookieValue.accessToken, memberCookieValue.refreshToken) console.log("refreshJWT RESULT", result) memberCookieValue.accessToken = result.accessToken memberCookieValue.refreshToken = result.refreshToken setCookie("member", JSON.stringify(memberCookieValue), 1) //원래의 호출 const originalRequest = res.config originalRequest.headers.Authorization = `Bearer ${result.accessToken}` return await axios(originalRequest) } return res } //fail response const responseFail = async (err) => { console.log("response fail error.............") console.log(err) const originalRequest = err.config; // 토큰 만료로 인한 401 응답이라면 → refresh 시도 if ( err.response && err.response.status === 401 && !originalRequest._retry // 무한 루프 방지 ) { originalRequest._retry = true; const memberCookieValue = getCookie("member"); try { const result = await refreshJWT( memberCookieValue.accessToken, memberCookieValue.refreshToken ); // 토큰 저장 memberCookieValue.accessToken = result.accessToken; memberCookieValue.refreshToken = result.refreshToken; setCookie("member", JSON.stringify(memberCookieValue), 1); // 원래 요청 재시도 originalRequest.headers.Authorization = `Bearer ${result.accessToken}`; return await axios(originalRequest); } catch (refreshError) { console.error("Refresh 실패, 로그아웃 처리 필요"); // 로그아웃 로직 연결 가능 localStorage.removeItem("token"); return Promise.reject(refreshError); } } return Promise.reject(err); } jwtAxios.interceptors.request.use(beforeReq, requestFail) jwtAxios.interceptors.response.use(beforeRes, responseFail) export default jwtAxios

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
Link 댓글 3 좋아요 0 조회수 185

"업로드 및 배포" 후 에러 메시지가 뜨지 않네요..

미해결

코드로 배우는 React 19 with 스프링부트 API서버

교재 561페이지를 따라가면서, 위의 메시지까지 받았습니다. 그리고 나서 10여분이 지났는 데도, 교재에서 얘기하는 것처럼 에러 메시지가 출력되지 않네요. 에러 메시지가 없어도 정상적으로 진행이 된 것인가요?

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
hee woong Yoo 댓글 3 좋아요 0 조회수 128

bootJar가 어디에 있지요?

미해결

코드로 배우는 React 19 with 스프링부트 API서버

교재 560페이지에서 "API 서버 프로젝트에서는 Gradle의 'bootJar'를 실행합니다'라고 되어 있는데, bootJar가 어디에 있지요?

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
hee woong Yoo 댓글 1 좋아요 0 조회수 98

해결은 못했습니다만...

미해결

코드로 배우는 React 19 with 스프링부트 API서버

거듭된 질문에 한결같이 답변을 해주셔서 감사합니다. 교재 9장까지는 문제없이 잘 진행되어서, 10장 부터 새로 작성한, 엔티티, DTO, Repository 싹 다 지우니, 앞서 작성한 테스트는 그나마 제대로 실행이 되는군요. 다시 엔티티부터 하나씩 깔면서, 동시에 테스트를 다시 진행해봐야 겠습니다.

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
hee woong Yoo 댓글 1 좋아요 0 조회수 67

testInsertByProduct() 와 관련된 에노테이션은 교재하고 똑같이 했고, log.info만 남기고 나머지 코드는 다 지웠는데도, 여전히 Test Failed가 뜨고, testInsertProduct() 메소드로 진입조차 안되는 군요.

미해결

코드로 배우는 React 19 with 스프링부트 API서버

testInsertByProduct() 와 관련된 에노테이션은 교재하고 똑같이 했고, log.info 만 남기고 나머지 코드는 다 지웠는데도, 여전히 Test Failed가 뜨고, testInsertProduct() 메소드로 진입조차 안되는 군요.

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
hee woong Yoo 댓글 1 좋아요 0 조회수 53

testInsertByProduct()에 아예 들어가지를 못하네요...

미해결

코드로 배우는 React 19 with 스프링부트 API서버

교재 9장까지 잘 따라왔습니다. 10장 장바구니 api 만들기에 들어와서 CartRepository 만들고 CartItemRepository를 만들고 CartRepositoryTests를 만들었습니다. 그리고, testInsertByProduct()를 테스트 하는데, Tests failed 가 나왔습니다. 코드 몇 군데에서 로그를 확인해봤는데, configuration 부분은 잘 통과했는데, testInsertByProduct() 메소드로는 진입조차 못하고 있습니다. 실습환경은 "인텔리제이" 입니다. 아래 캡쳐는, 에러가 시작되는 경계로 생각되는 부분입니다. 질문 내용이, 답변 주시기에 좀 부족하다면, 더 필요한 코드 부분이나, 에러로그를 보충해서 다시 질문에 올리도록 하겠습니다.

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
hee woong Yoo 댓글 1 좋아요 0 조회수 71

목록(페이징)처리구현 - import package 문의

미해결

코드로 배우는 React 19 with 스프링부트 API서버

강의수강중에 Pageable import 관련하여 아래와 같은 Pageable을 선택하니까 오류가 나오더라구요...type unmatch 형태 //import java.awt.print.Pageable; springboot를 사용할 때는 아래와 같은 org.springframework의 형태가 import 우선순위가 되는것이 맞는건가요? import org.springframework.data.domain.Pageable;

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
wonyongick 댓글 2 좋아요 0 조회수 90

spread ... 사용하는 이유가 궁금합니다

미해결

코드로 배우는 React 19 with 스프링부트 API서버

안녕하세요? [조회 페이지 이동] 영상을 보고 있는데요. List, Read Component에서는 spread를 하지 않고 바로 set으로 값을 넣었는데 Add Component에서는 왜 {...initState}, {...todo}를 하는지 궁금합니다.

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
정아연 댓글 2 좋아요 0 조회수 96

moveToList 질문 드립니다.

미해결

코드로 배우는 React 19 with 스프링부트 API서버

안녕하세요 선생님. 좋은 강의를 정말 잘 듣고 있습니다ㅎㅎ [네비게이션관련 커스텀 훅] 강의에서 궁금한게 생겼는데요~ 쿼리 스트링에 page와 size가 있는데, moveToList에 파라미터로 page와 size를 전달해서 처리해야 하는 이유가 무엇인지 알 수 있을까요?

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
댓글 2 좋아요 0 조회수 88

tailwind 부분 도와주세요

미해결

코드로 배우는 React 19 with 스프링부트 API서버

어디를 수정해야 할까요? 지금 계속 다시 해보고 있는데 해결이 되지 않습니다ㅠ 앞서 이렇게 했었는데 해결되지 않아 다시 해보고있습니다..! tailwind.config.js 의 content에 이렇게 입력하는게 맞나요?? index.css에 이렇게 오류가 떠서요 ㅠㅠ -> 우측하단 언어모드를 tailwindCSS로 바꾸면 밑줄은 사라지는데 npm start 실행시 이렇게 뜹니다..!

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
Sssu 댓글 2 좋아요 0 조회수 142

tailwind.config.js 의 content

미해결

코드로 배우는 React 19 with 스프링부트 API서버

tailwind.config.js 의 content에 이렇게 입력하는게 맞나요?? index.css에 이렇게 오류가 떠서요 ㅠㅠ -> 우측하단 언어모드를 tailwindCSS로 바꾸면 밑줄은 사라지는데 npm start 실행시 이렇게 뜹니다..!

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
Sssu 댓글 1 좋아요 0 조회수 112

Tailwindcss 설정

미해결

코드로 배우는 React 19 with 스프링부트 API서버

npx tailwindcss init 작성시 'tailwind'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. 라고 뜹니다 코드를 다르게 작성해야하나요?

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
Sssu 댓글 2 좋아요 0 조회수 210

MariaDB 연동시 지속적인 에러

미해결

코드로 배우는 React 19 with 스프링부트 API서버

마지막 JDBC 데이터베이스 설정하는 부분까지 했는데도 계속 에러가 나서 찾아보니 mariaDB보다 MySQL이 더 호환이 잘된다고 나와서 MySQL로 변경하려 합니다. 그런데 mariaDB와 MySQL 모두 계속 오류가나서 진행이 되지 않네요 ㅠ 참고자료로 올려주신 pdf의 25페이지 코드 참고해서 해봐도 되지 않는데 살펴봐야 할 곳이 어디 있을까요? MySQL로 하는 방법도 알려주시면 감사하겠습니다!

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
Sssu 댓글 2 좋아요 0 조회수 210

안녕하세요 조회기능 구현에서 에러가 발생했습니다

미해결

코드로 배우는 React 19 with 스프링부트 API서버

vscode를 통해 npm start를 한 후, todo/read/숫자를 입력하니까 404에러가 발생했습니다. 그런데 vscode에서 컨트롤S를 눌렀더니 화면이 떴는데 익스플로러 상에서 새로고침을 하니까 다시 404에러가 발생하는데 이유를 모르겠습니다. 이미지를 첨부할 테니 혹시 더 필요하신 게 있으시면 답변해 주시면 감사드리겠습니다.

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
wjdwoals042 댓글 2 좋아요 0 조회수 189

조회기능 구현 강의에서 에러가 발생했습니다

미해결

코드로 배우는 React 19 with 스프링부트 API서버

ReadComponent.js 파일을 만들고 ReadPage의 리턴 내용에 ReadComponent의 tno 값을 추가한 후에 npm start를 실행했는데 아래와 같은 에러가 발생했습니다. [eslint] src\components\menus\todo\ReadComponent.js Line 13:29: 'useState' is not defined no-undef Line 16:9: 'getOne' is not defined no-undef Search for the keywords to learn more about each error. ReadComponent.js의 useState와 getOne 로직 부분이 잘못 된 거 같아서 강의 영상을 다시 봤는데 틀린 부분이 없어 보여 어떤 게 문젠지 질문을 드리고 싶습니다. 참고용으로 ReadComponent.js의 내용을 추가해놓겠습니다. import React, { useEffect } from 'react'; const initState = { tno:0, title:'', writer:'', dueDate: '', complete: false } function ReadComponent({tno}) { const [todo, setTodo] = useState(initState) useEffect(() => { getOne(tno).then(data => { console.log(data) setTodo(data) }) }, [tno]); return ( <div> </div> ); } export default ReadComponent; 덧붙여서 툴은 vscode를 쓰고 있습니다. 잘 부탁드리겠습니다.

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
wjdwoals042 댓글 3 좋아요 0 조회수 150

인기 태그

인프런 TOP Writers

주간 인기글