inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

완강 했어요 ^^

미해결

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

드디어 완강 하였네요.. 이 강의 난의도가 초급이라던데 어려운 부분도 많긴 했어요. 이제 중급 실력되는건가요? ^^;;; 스프링은 모든 내용이 이해가되긴한데 React 쪽이 어렵네요... 아마도 문법이 다양하고 오류 잡기도 어려워서 그렇겠죠? ㅎㅎㅎㅎ intelij 도 만기가 끝나가네요... visual studio code, intelij community학습 목적엔 위 2개로 개발 연습해도 되나요?? 다음으로 학습해야될 스프링 학습은 어떤걸 해야될까요? 잡 사이트 보니깐 코틀린 + 스프링은 쓰는 곳이 없네요... 인기가 없나... 진짜 매력적인 언어인데.

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
just kim 댓글 1 좋아요 0 조회수 163

에러 처리 방법

미해결

[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지

9강에서는 대체로 console.error(err); next(err); 이런 식으로 에러를 처리했고 10강에서는 res.json 으로 에러 코드, 메세지를 반환하고 있는데 이 둘의 차이가 뭔가요? 에러 처리 미들웨어를 사용할 때와 json을 반환할 때를 어떻게 정할 수 있는지(?) 기준이 궁금합니다.

  • node.js
  • mysql
  • mongodb
  • express
  • typescript
  • socket.io
  • jwt
공태성 댓글 2 좋아요 0 조회수 209

서비스계층 만들기 11분 10초 PageRequestDTO 에 Builder 설정 왜 하는 거에요?

미해결

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

package org.zerock.apiserver.dto; import lombok.Builder; import lombok.experimental.SuperBuilder; @SuperBuilder public class PageRequestDTO { @Builder.Default private int page = 1; @Builder.Default private int size = 10; }

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
현석오 댓글 1 좋아요 0 조회수 122

NodeBird 서비스의 화면 렌더링 방식에 대해 질문 드립니다!

미해결

[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지

궁금한 점이 있습니다. 9강에서 만든 NodeBird 서비스의 구조는 프론트엔드가 따로 있는 것이 아니라 서버 측에서 nunjucks와 html 파일들을 사용하여 화면을 구성하는 것이 맞나요? 1번이 맞고, 백엔드에서 직접 html을 생성하여 클라이언트에게 제공하는 구조라면 제가 공부한대로는 SSR 방식인 것 같은데 맞나요? 프론트엔드를 따로 만들어서 서버와 연동하려면 app.js의 아래 코드와 views 폴더를 삭제하고 프론트 쪽에서 서버 측에서 만든 주소들을 호출하면 되나요? // app.js의 일부 app.set("view engine", "html"); nunjucks.configure("views", { express: app, watch: true, });

  • node.js
  • mysql
  • mongodb
  • express
  • typescript
  • socket.io
  • jwt
공태성 댓글 1 좋아요 0 조회수 125

섹션 4 리액트와 API서버 통신 조회기능 구현 화면 차이 문의 건

미해결

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

안녕하세요. 질문이 있습니다. 섹션 4 리액트와 API서버 통신 에서 조회기능 구현을 실행하였습니다. 강사님 화면과 달리 저의 화면은 아래와 같이 나옵니다. 위 부분중 차이 나는 부분을 아래 다시 캡춰했습니다. 현재 스프링 부트는 아래와 같이 실행되고 있습니다. 조금 확대해서 다시 아래 다시 캡춰했습니다. 강사님은 한 화면에서 두개가 나오는 거 같은데요. 제가 어떤걸 수정해야 하는지 알고 싶습니다. 위 섹션 4 리액트와 API서버 통신 에서 조회기능 구현에서 최초 연결 확인하는 부분까지 코드는 강의에 나온데로 진행하였습니다. 부탁드립니다. 감사합니다.

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
사랑2 댓글 4 좋아요 0 조회수 312

4.1 마지막 회원가입 실행되지만 빈화면 뜸

미해결

[초급] 찍어먹자! 코틀린과 Spring Security + JWT로 회원가입 만들기

오류없이 실행은되는데 계속 이렇게 아무것도 결과가 안나옵니다. 봐도봐도 모르겠어 프로젝트 파일 남겨봅니다. https://drive.google.com/file/d/1UngsyVj2InuB9bJWA6hpdcjhMBkXI9w3/view

  • kotlin
  • spring-boot
  • jpa
  • spring-security
  • jwt
이홍영 댓글 3 좋아요 0 조회수 297

AccessDeniedHandler가 작동하지않습니다

미해결

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

@Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { try { 생략... SecurityContextHolder.getContextHolderStrategy().getContext().setAuthentication(token); filterChain.doFilter(request, response); } catch (Exception e) { log.info("---------------JWT ERROR!------------"); log.info(e); log.info(e.getMessage()); ObjectMapper mapper = new ObjectMapper(); String jsonStr = mapper.writeValueAsString(Map.of("error", "ERROR_ACCESS_TOKEN")); response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); PrintWriter writer = response.getWriter(); writer.println(jsonStr); writer.close(); } } 강의의 JWT와 @PreAuthorize 이용하기 파트 후반부에 강의처럼 USER권한만 가진 사용자로 ADMIN권한이 필요한 메소드에 접근하니 포스트맨에서 AccessDenied exception이 뜨지않고 catch (Exception e)가 예외를 잡아버려서 { "error": "ERROR_ACCESS_TOKEN" } 결과가 이렇게 나옵니다 이미 AccessDenied 핸들러도 시큐리티에 등록 시킨후 입니다 ADMIN권한을 가진 사용자 토큰으로 요청을 보내면 원하는 데이터도 잘 나옵니다 catch로 잡아서 예외를 던질까 시도해봤는데 이유는 모르겠지만 Exception에서만 예외가 잡힙니다ㅠ 그래서 여러가지 해결책을 알아봤는데 첫번째 catch (RuntimeException e) { log.info("---------------JWT ERROR!------------"); log.info(e); log.info(e.getMessage()); ObjectMapper mapper = new ObjectMapper(); String jsonStr = mapper.writeValueAsString(Map.of("error", "ERROR_ACCESS_TOKEN")); response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); PrintWriter writer = response.getWriter(); writer.println(jsonStr); writer.close(); } 이렇게 RuntimeException으로하면 { "error": "ERROR_ACCESSDENIED" } AccessDenied 핸들러가 잘 작동하구요 두번째 SecurityContextHolder.getContextHolderStrategy().getContext().setAuthentication(token); } catch (Exception e) { log.info("---------------JWT ERROR!------------"); log.info(e); log.info(e.getMessage()); ObjectMapper mapper = new ObjectMapper(); String jsonStr = mapper.writeValueAsString(Map.of("error", "ERROR_ACCESS_TOKEN")); response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); PrintWriter writer = response.getWriter(); writer.println(jsonStr); writer.close(); } filterChain.doFilter(request, response); doFilter를 try catch 밖에 두어도 AccessDenied 핸들러가 잘 작동합니다 세번째 @ExceptionHandler(AccessDeniedException.class) public ResponseEntity<?> notAuthorized(AccessDeniedException e) { return ResponseEntity.status(HttpStatus.FORBIDDEN).body(e.getMessage()); } RestControllerAdvice로 하면 핸들러가 작동안하긴해도 예외처리가 가능했습니다 근데 문제는 왜 원래코드에서 영상처럼 작동을 안하는지 이유를 모르겠습니다 제가 빠트린부분이 있을까요? 스프링부트 버전도 똑같이 맞춰보기도 했습니다

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
고래돌 댓글 1 좋아요 0 조회수 280

로그인 성공과 실패 처리 강의중 에러 발생하여 문의드립니다.

해결됨

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

안녕하세요. user(1~9)@aaa.com 계정 생성 후 postman 으로 /api/member/login 호출하여 로그인 성공 후, ApiLoginSuccessHandler 으로 빠지는 부분을 확인 하려는 참입니다. 그런데 postman 으로 호출시 loadUserByUsername 에서 return 이후 successHandler 가는 도중 실패가 뜹니다. Failed to process authentication request org.springframework.security .authentication.BadCredentialsException: 자격 증명에 실패하였습니다. DB에 있는 패스워드와 1111을 매칭해봐도 true 로 반환됩니다. 어떤부분이 문제 일까요...?

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
Yoo Jong-Sun 댓글 3 좋아요 0 조회수 276

엔티티 클래스 만들기 챕터에서 테이블 왜 두개 만들어진 건가요?

미해결

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

엔티티 클래스 만들기 챕터에서 테이블 왜 두개 만들어진 건가요? 엔티티 클래스 만들기 챕터 8분 36초에서 테이블이 왜 두개 만들어 졌나요?

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
현석오 댓글 1 좋아요 0 조회수 170

팔로잉과 팔로워 관계

미해결

[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지

deserializeUser에서 req.user에 넣을 팔로잉이랑 팔로워 찾으실 때, as는 모델 관계의 as를 따라간다고 하셨는데 왜 위 코드에서 Follwers 가 //팔로잉 이고 Followings 가 //팔로워 라고 하신 건지 모르겠습니다ㅜ 예를 들어, 저의 팔로잉을 찾으려면 제 아이디를 팔로워 아이디에서 찾아야 하니까 기준 아이디가 followerId가 되는 Followings가 맞는거 아닌가요?

  • node.js
  • mysql
  • mongodb
  • express
  • typescript
  • socket.io
  • jwt
공태성 댓글 2 좋아요 0 조회수 167

connect.sid를 쿠키에 넣는 시점과 express-session

미해결

[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지

req.login를 통해 req.session에 { 랜덤값: 유저아이디} 를 저장하는 건 알겟는데, connect.sid=랜덤값 을 쿠키에 넣는 시점은 언제인가요? 그리고 서버가 connect.sid 를 세션 쿠키로 전송할 때, express-session 은 자동으로 이 값을 secret으로 서명하여 전송하나요?

  • node.js
  • mysql
  • mongodb
  • express
  • typescript
  • socket.io
  • jwt
공태성 댓글 2 좋아요 0 조회수 272

세션 10번 완성 소스가 잘못올라온거 같아요

미해결

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

세션 10번 강의 보면서 따라가고 있는데 org.springframework.dao.DataIntegrityViolationException: could not execute statement [(conn=335) Cannot add or update a child row: a foreign key constraint fails (`apidb`.`tbl_cart_item`, CONSTRAINT FKs7vg62w3nq7igdxgssq1u0biw FOREIGN KEY (`product_pno`) REFERENCES tbl_product (`pno`))] [insert into tbl_cart_item (cart_cno,product_pno,qty) values (?,?,?) returning cino]; SQL [insert into tbl_cart_item (cart_cno,product_pno,qty) values (?,?,?) returning cino]; constraint [null] 에러가 나오더라구요.. 그래서 제가 세션 10 완성 소스 보면서 잘못된 곳을 찾아 보려는데 ... 올라건 소스가 잘못된거 같아요... 세션 10의 소스가 아닙니다.

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

LocalDateFormatter에 대해서 궁금한 점이 있습니다.

미해결

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

public ResponseEntity searchLinkOrderNumberOutput( @ApiParam("주문 번호") @RequestParam(required = false) List<String> orderNumbers, @ApiParam(name = "startDate", value = "yyyyMMdd", required = true) @RequestParam String startDate, @ApiParam(name = "endDate", value = "yyyyMMdd", required = true) @RequestParam String endDate, @ApiParam(name ="confirmationStatus", value="확정여부(Y/N)") @RequestParam String confirmationStatus, @ApiParam(name = "pageSize", value = "한 페이지에 보여줄 주문 개수 (미 입력시 기본값 20)") @RequestParam(defaultValue = "20") int pageSize, @ApiParam(name = "pageNumber", value = "데이터를 조회 할 페이지 숫자 (미 입력시 기본값 1)") @RequestParam(defaultValue = "1") int pageNumber) { 궁금한 점이 있습니다 선생님 만일 controller에서 string으로 날짜값을 받으면 이제 별도의 파싱작업을 거쳐서 LocalDateTime 형식으로 변환해 줘야하는데 LocalDateFormatter을 사용하면 해당 작업을 생략할 수 있는건가요???

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
hk.moon 댓글 1 좋아요 0 조회수 117

ProductSearchImpl 관련 질문드립니다.

미해결

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

@Override public PageResponseDTO<ProductDTO> searchList(PageRequestDTO pageRequestDTO) { log.info("----------------------searchList-------------------------"); Pageable pageable = PageRequest.of( pageRequestDTO.getPage() -1, pageRequestDTO.getSize(), Sort.by("pno").descending()); QProduct product = QProduct.product; QProductImage productImage = QProductImage.productImage; // from 절 JPQLQuery<Product> query = from(product); // join // @ElementCollection을 join 할때는 아래와 같이 사용해야합니다. // product.imageList를 productImage로 사용하겠다. query.leftJoin(product.imageList, productImage); query.where(productImage.ord.eq(0)); Objects.requireNonNull(getQuerydsl()).applyPagination(pageable,query); List<Tuple> productList = query.select(product,productImage).fetch(); // 쿼리를 실행시키기 위함. long count = query.fetchCount(); log.info("======================="); log.info(productList); return null; } 이 코드에서 return 값을 넘기고 싶어서 수정하는데 어떻게 해야 값이 넘어가는지를 잘 모르겠습니다... TodoSearchImpl에서는 new PageImpl<>() 사용하셔서 넘기셨는데 여기서는 어떻게 처리해야 될까요?? 2. ProductServiceImpl의 getList() 메서드와 동일한 역할인거같은데, ProductSearchImpl 에서는 querydsl을 사용하셔서 보여주신거고 ProductServiceImpl에서는 jpa를 사용하는 방법을 보여주신게 맞는지 궁금합니다!

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
hk.moon 댓글 2 좋아요 0 조회수 122

express.static의 요청 처리

해결됨

[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지

app.use('/', express.static(path.join(__dirname, 'public'))); 다른 코드들에서는 이런 식으로 경로를 지정하면 경로와 똑같은 요청만 처리를 하거나 모든 요청에 대해 처리하고 싶으면 그냥 경로를 생략하였는데 express.static은 왜 localhost:3000/ 에 대한 요청만 받아들이는 것이 아니라, 모든 요청에 대해 해당 파일이 있는지 확인하게 되는지 궁금합니다. 예시) localhost:3000/about -> public 폴더 안에 about 파일이 있는지 찾음 localhost:3000/hello.css -> public 폴더 안에 hello.css 파일이 있는지 찾음 express.static은 특별한 미들웨어 인가요?

  • node.js
  • mysql
  • mongodb
  • express
  • typescript
  • socket.io
  • jwt
공태성 댓글 2 좋아요 0 조회수 154

4.1강 마지막 회원가입 실행

미해결

[초급] 찍어먹자! 코틀린과 Spring Security + JWT로 회원가입 만들기

모든 코드를 다 작성하고 db실행도 다 한 상태로 send룰 눌렀는데 이렇게 빈 실행화면이 뜨고 디비에 회원정보가 생기지 않습니다. 오탈자가 있나 살펴보았지만 도저히 찾지 못하였습니다.

  • kotlin
  • spring-boot
  • jpa
  • spring-security
  • jwt
이홍영 댓글 1 좋아요 0 조회수 203

`app.use`의 용도에 대해 질문 드립니다!

미해결

[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지

궁금한 점이 있습니다. 지금까지는 다음과 같이 app.use 안에 요청 처리를 위한 미들웨어를 작성했는데, app.use((req, res, next) => { console.log("모든 요청에 실행하고 싶어요"); next(); }); 다음과 같이 app.use에 다운받은 미들웨어를 장착하는 건 "이 파일에서 특정 미들웨어를 사용하겠다"는 의도로 사용하는 건가요?? 아니면 둘 다 같은 동작을 하는건데 제가 둘을 다르다고 생각하는 걸까요? app.use(morgan("dev")); app.use(cookieParser()); app.use(express.json()); app.use(express.urlencoded({ extended: true })); 추가로, 위 미들웨어들로 인해 req 이나 res 객체에서 편하게 .cookie 나 .body 를 사용할 수 있게 되는데 그럼 미들웨어 내에서 미들웨어를 사용하는 건가요 🤔 🤔 ?

  • node.js
  • mysql
  • mongodb
  • express
  • typescript
  • socket.io
  • jwt
공태성 댓글 1 좋아요 0 조회수 152

강의 실습하다가 막히는 분들 참고(2024년8월 기준)

해결됨

스프링부트 시큐리티 & JWT 강의

2024년 8월 현재 강의들으며 실습하다 막히는 분들 참고용으로 제 소스 공유합니다. 막혔던 부분 커뮤니티에 해결방법 공유해주신 분들 덕분에 실습 잘 하고 있습니다. 모두 감사합니다^^ +++ OAuth2.0 실습 소스 +++ https://github.com/hhmkorea/studySpringBoot/tree/main/security1 +++ JWT 실습 소스 +++ https://github.com/hhmkorea/studySpringBoot/tree/main/jwt ##### 막힌 부분 뚫어준 커뮤니티 글 출처 ##### 1. BycryptPasswordEncoder 주입시 순환참조 문제 해결!! (9강) : https://www.inflearn.com/questions/476829 페이스북 로그인 버튼 만든 뒤 error 발생하던 문제 해결!! (10강) : https://www.inflearn.com/community/questions/1049529 3. SecurityConfig 최신 버전에 맞게 수정!! (20강~22강) : https://www.inflearn.com/questions/1335544 authenticationManager() 문제 해결!! (24강) : https://www.inflearn.com/community/questions/1145565 authenticationManager 값이 null로 나오는 문제 해결!! (25강) : https://www.inflearn.com/questions/1266285 >>> 24강 강의 실습 전 준비할 것 : 회원가입 구현 <<< 아래 소스에 회원가입 구현 부분 추가 한다. 소스명 : JwtApplication. java ... @Bean BCryptPasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } ... 소스명 : RestApiController. java ... @PostMapping("join") public String join(@RequestBody User user) { user.setPassword(bCryptPasswordEncoder.encode(user.getPassword())); user.setRoles("USER"); // 권한은 기본으로 USER로 설정합니다. ---> security 최신 버전에서는 권한 적용시 ROLE_ 쓰지 않음. userRepository.save(user); return "회원가입완료"; } ... application.yml 파일 수정해서 테이블을 새로 만든다. ddl-auto: create 로 수정하고 서버 재시작 postman으로 회원가입 테스트하기.

  • spring
  • spring-security
  • jwt
루키000 댓글 2 좋아요 2 조회수 1192

구글 소셜 로그인 302

미해결

스프링부트 시큐리티 & JWT 강의

소셜 로그인 버튼을 누르면 302가 뜨면서 구글 로그인 페이지로 이동하지않는데 왜 그런 건가요? 브라우저 캐시 문제인가싶어서 지우고도 해봤지만 결과는 똑같아요

  • spring
  • spring-security
  • jwt
댓글 1 좋아요 0 조회수 259

인기 태그

인프런 TOP Writers

주간 인기글