묻고 답해요
130만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결코드로 배우는 React with 스프링부트 API서버
예외처리 질문
안녕하십니까, 현재 섹션3까지 수강하였는데 예외처리에 대해 궁금한 점이 생겨 질문드립니다.아직 예외상황 발생시 백엔드와 프론트엔드에서 무엇을 해야할 지 잘 모르겠는데 예외가 발생했을때 백엔드에서는 어떤 정보를 넘겨줘야하나요? 강의에서처럼 상태코드와 메시지만 넘겨주면 백엔드에서 할 일은 끝인가요?마찬가지로 프론트에서도 어떻게 대처하는지 궁금합니다.
-
미해결코드로 배우는 React with 스프링부트 API서버
섹션 8 .. API서버에서 사용자 정보 추출하기(2) 질문입니다.
accessToken을 넘기는데 undefined가 떠서 컨트롤러에 오지 못하는 거 같습니다. socialcontroller 입니다. 리액트 kakaoAPI.js 입니다. accessToken을 쿼리스트링으로 잘 보내고받는 코드는 맞는거 같은데 왜 undefined가 뜨는지 모르겠습니다...
-
미해결코드로 배우는 React with 스프링부트 API서버
useParam() 사용 질문
학습을 하던 중 코드에 궁금중이 생겨 질문드립니다.현재 modifyPage.js를 보면 인자에 tno를 받아와 사용하고 있습니다.그리고 readPage.js에서는 useParam()을 이용해 tno 값을 받아와 사용하고있는걸 확인하고 readPage에서도 ModifyPage 에서 처럼 useParam()을 사용하지 않고 인자로 받아와 사용하는 방식으로 해보았는데 오류가 나는데 왜그런걸까요?위의 코드를이렇게 바꾸면 오류가 납니다.
-
미해결코드로 배우는 React with 스프링부트 API서버
LocalDateFormatter 사용 유무 차이
현재 LocalDateFormatter를 사용한 것과 사용하지 않았을 때 register 함수를 실행해보았는데 두 경우 모두 문제 없이 동일한 동작을 해서 아직 필요성을 못느끼겠는데 차이를 느끼려면 어떻게 테스트해보아야할까요?
-
미해결코드로 배우는 React with 스프링부트 API서버
entity, dto 변환 메서드 위치
안녕하십니까, 강의에서는 todoService 인터페이스에 entity와 dto를 변환하는 메서드를 구현하였는데, 저는 평소에 dto 클래스에 dtoToEntity 메서드를, 엔티티 클래스에 EntityToDto 메서드를 만들어서 사용하였는데 강사님의 방법가 제가 사용하는 방법 중 어느 게 더 나은지, 그리고 그 이유를 알 수 있을까요?
-
해결됨코드로 배우는 React with 스프링부트 API서버
JWT 체크 필터 적용 후 상품 목록 조회 시 동일한 객체를 묶어 불러오는 문제
체크 필터 적용 후http://localhost:8080/api/products/list?경로로 요청 해보니 동일한 정보를 2번 보내 주는거 같은데 정상적인 상태인지 궁금해 문의 드려요. 백엔드 로그를 보면 query문이 2번 실행이 되고 있습니다.2024-05-08T14:30:30.805+09:00 DEBUG 4545 --- [security-prj2-practice-back2] [nio-8080-exec-2] o.s.security.web.FilterChainProxy : Secured GET /api/products/list? Hibernate: select p1_0.pno, p1_0.del_flag, p1_0.pdesc, p1_0.pname, p1_0.price, il1_0.file_name, il1_0.ord from tbl_product p1_0 left join product_image_list il1_0 on p1_0.pno=il1_0.product_pno where il1_0.ord=0 and p1_0.del_flag=0 order by p1_0.pno desc limit ?, ? Hibernate: select count(p1_0.pno) from tbl_product p1_0 left join product_image_list il1_0 on p1_0.pno=il1_0.product_pno where il1_0.ord=0 and p1_0.del_flag=0 2024-05-08T14:30:30.874+09:00 TRACE 4545 --- [security-prj2-practice-back2] [nio-8080-exec-2] o.s.s.w.header.writers.HstsHeaderWriter : Not injecting HSTS header since it did not match request to [Is Secure] 2024-05-08T14:30:30.875+09:00 DEBUG 4545 --- [security-prj2-practice-back2] [nio-8080-exec-2] o.s.security.web.FilterChainProxy : Secured GET /api/products/list? Hibernate: select p1_0.pno, p1_0.del_flag, p1_0.pdesc, p1_0.pname, p1_0.price, il1_0.file_name, il1_0.ord from tbl_product p1_0 left join product_image_list il1_0 on p1_0.pno=il1_0.product_pno where il1_0.ord=0 and p1_0.del_flag=0 order by p1_0.pno desc limit ?, ? Hibernate: select count(p1_0.pno) from tbl_product p1_0 left join product_image_list il1_0 on p1_0.pno=il1_0.product_pno where il1_0.ord=0 and p1_0.del_flag=0 해결 해서 해결 내역 첨부 합니다.강의 에서는 JWTCheckFilter 내부에 제일 아랫줄 filterChain.doFilter(request, response);코드 줄을 살린채 진행 해주셔서 발생 했던 문제 인거 같습니다. 동일한 문제 겪으신 분들은 해당 코드 지우시면 1번만 호출 합니다.
-
미해결코드로 배우는 React with 스프링부트 API서버
안녕하세요 코드 관련 질문입니다.
코드를 인터넷에 올려두셨다 했는데링크 알 수 있을까요?
-
미해결코드로 배우는 React with 스프링부트 API서버
아래 망고123님이 남겨주신 질문에 추가 입니다.
serverData의 current값이 문제인 것 같은데요...서버에서 current값을 설정해주는 코드가 없었는데혹시 빠진걸까요?아니면 제가 놓친걸까요계속 확인해보다가 못찾아서 질문 남깁니다.
-
해결됨코드로 배우는 React with 스프링부트 API서버
config 패키지 내 파일 문의
이전 학습인 섹션2 Rest 방식 컨트롤러 만들기 (2)까지만 해도 RootConfig 파일이 없었는데 지금 수업 Rest컨트롤러 - 수정/삭제, CORS 에는 해당 class 파일이 추가 되어 있더라구요.그런데 querydsl 검색처리 에서 제공해주신 압축 파일에 해당 RootConfig 파일이 존재 하는데 해당 파일을 추가 해야하는지 없어도 괜찮은지 궁금해서 문의 드려요.
-
해결됨[초급] 찍어먹자! 코틀린과 Spring Security + JWT로 회원가입 만들기
안녕하세요 선생님 rememberme 질문드립니다..!
스프링 시큐리티 + JWT 를 사용한 API 서버에서 프론트(리액트)에다가 회원 로그인할 때 자동 로그인을 선택하면 자동 로그인이 되도록 수행하고 싶습니다. 문제는 세션을 비활성화한 상태에서 자동 로그인 유지를 어떻게 접근해야 할까요...?
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
req.login에서 passport.serializeUser 호출 원리
passport로 로그인 실습을 진행중에 있습니다. passport.initialize(); 이후에 localStrategy 등록해둔 메서드를 통해 로그인 여부 확인하는 데까지는 까지는 이해가 되었습니다. 그런데 /controller/auth.js 에서 req.login 이후에 passport.serializeUser이 호출되는 방식이 이해가 안되네요.www.passportjs.org 에서문서를 읽어보고 있는데 꼼꼼함이 부족한지 이해가 잘 안되네요. req.login 메서드 자체를 passport에서 정의하고 있고 login 메서드가 호출될때 자동으로 serializeUser가 호출되는건가요?
-
미해결코드로 배우는 React with 스프링부트 API서버
인텔리제이 tailwindcss
안녕하세요. 저는 인텔리제이에서 vite로 리액트를 설치하고, 스프링 부트 프로젝트와 연동을 시켜놓은 상태로 강사님 강의를 따라가고 있는데요. 강의 따라서 tailwind 설치하고, 코드 추가해주고 App Component에서 스타일을 쓰려고 하니, 적용이 안되는데 어떻게 해결할 수 있을까요??
-
미해결코드로 배우는 React with 스프링부트 API서버
mariadb 다운로드 관련 질문입니다.
안녕하세요 강의 잘 듣고 있습니다.저는 version을 클릭해도 아무것도 뜨지 않습니다....도움 부탁드립니다.
-
해결됨코드로 배우는 React with 스프링부트 API서버
/api/member/login 404 에러 질문 드립니다.
시큐리티까지 강의를 듣고 혼자 실습 예제 만들어서 회원가입부터 진행하고 있습니다. 강의 따라서 진행할 때에는 잘 됐는데, 지금은 섹션6 시큐리티 부터 따라했는데 /api/member/login 으로 포스트맨이나 웹 브라우저로 접속하면 해당 경로를 찾을 수 없다는 404 에러가 발생하게 됐습니다. ㅠㅠ http.formLogin(config -> config.loginPage("/api/member/login"));강의 따라 진행할 때에도 /api/member/login 컨트롤러는 별도로 없었는데, 지금 왜 갑자기 에러가 발생하는지 궁금합니다 ㅜㅜ
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
스스로하기에서 귓속말 구현할때
socket.id로 하면맨첨엔 귓속말 잘되는데 유저가 나갔다가 들어오면 socket.id가 갱신되어서 예전에 보냈던 채팅의 귓속말 버튼으로는 귓속말이 안가게 되는데 저만 이런건가요??
-
미해결코드로 배우는 React with 스프링부트 API서버
csrf disable 의 대안책에 대해 질문드립니다.
스프링 시큐리티를 학습한 지 얼마 안되서 부족한 부분이 많아서 궁금한 점이 있어서 질문드립니다.csrf 를 disable 으로 설정하고 JWT 토큰을 활용하여 엑세스 토큰 유효 시간을 짧게(10분 이면 괜찮을까요..?)설정과 함께 리프레쉬 토큰(30일이면 괜찮을까요..?)을 발급하는 것으로 csrf 공격에 대비가 충분하다고 볼 수 있을까요?그리고 금융권처럼 보안을 강력하게 요구되지 않은 이용자 빈도가 낮은 개인 쇼핑몰 페이지 같은 실무 환경에서 csrf 에 대해 어떻게 대안을 세우는 것이 가장 적절하고 보편적인 방법이 될까요?
-
미해결코드로 배우는 React with 스프링부트 API서버
PathVariable이 제대로 인식되지 않는 문제
본 강의 REST컨트롤러 - 수정/삭제, CORS 설정 시청중에Putmapping, DeleteMapping 쪽에서 파라미터를 @PathVariable로 받는데, postMan에서 테스트 요청을 보냈을때 파라미터가 전달되지 않습니다. @PathVariable(name="tno") 처럼 name을 명시하니까 제대로 파라미터가 받아지던데요 원래는 name은 생략 가능한게 아닌가요??
-
미해결스프링부트 시큐리티 & JWT 강의
jwt를 저장하는 위치에 궁금한 점이 있습니다.
강사님 강의 열심히 잘보고 있습니다.강사님 강의도 보고 인터넷에 있는 레퍼런스도 많이 찾아보니까 토큰을 만들고 해당 토큰을 SecurityContextHolder 에 담는 방식과 강사님처럼 response.addHeader 로 담는 두가지 방식이 있는거같은데 혹시 두개의 차이점이 무엇인가요?
-
해결됨[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
노드 삭제 재설치
그러면 안되지만 잘못 설치했을경우 노드 삭제 재설치 및 버전 업데이트 하는 방법에 대해서 혹시 유튜브에라도 해당 내용이 있을실까요?
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
저는왜 렌더링 화면이 다를까요 ?
저는 이 화면으로만 보이고 domain 적는 구간이없는데.. 왜그럴까요 계속 로그인 상태 알람만 발생합니다. <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>API 서버 로그인</title> <style> .input-group label { width: 200px; display: inline-block; } </style> </head> <body> {% if user and user.id %} <span class="user-name">안녕하세요! {{user.nick}}님</span> <a href="/auth/logout"> <button>로그아웃</button> </a> <fieldset> <legend>도메인 등록</legend> <form action="/domain" method="post"> <div> <label for="type-free">무료</label> <input type="radio" id="type-free" name="type" value="free"> <label for="type-premium">프리미엄</label> <input type="radio" id="type-premium" name="type" value="premium"> </div> <div> <label for="host">도메인</label> <input type="text" id="host" name="host" placeholder="ex) zerocho.com"> </div> <button>저장</button> </form> </fieldset> <table> <tr> <th>도메인 주소</th> <th>타입</th> <th>클라이언트 비밀키</th> </tr> {% for domain in domains %} <tr> <td>{{domain.host}}</td> <td>{{domain.type}}</td> <td>{{domain.clientSecret}}</td> </tr> {% endfor %} </table> {% else %} <form action="/auth/login" id="login-form" method="post"> <h2>NodeBird 계정으로 로그인하세요.</h2> <div class="input-group"> <label for="email">이메일</label> <input id="email" type="email" name="email" required autofocus> </div> <div class="input-group"> <label for="password">비밀번호</label> <input id="password" type="password" name="password" required> </div> <div>회원가입은 localhost:8001에서 하세요.</div> <button id="login" type="submit">로그인</button> </form> <script> window.onload = () => { if (new URL(location.href).searchParams.get('error')) { alert(new URL(location.href).searchParams.get('error')); } }; </script> {% endif %} </body> </html> view에 login도 위와 같이 들어가있습니다.const { User, Domain } = require("../models"); const { v4: uuidv4 } = require("uuid"); exports.renderLogin = async (req, res, next) => { try { const user = await User.findOne({ where: { id: res.user?.id || null }, include: { model: Domain } }) res.render("login", { user, domains: user?.Domains }) } catch (err) { console.error(err) next(err); } } exports.createDomain = async (req, res, next) => { try { await Domain.create({ UserId: req.user.id, host: req.body.host, type: req.body.type, client: uuidv4() }) res.redirect("/"); } catch (err) { console.error(err); next(err); } } controller에서도 강의대로 잘 렌더가 들어가있습니다. 그러니 화면이 보이긴하는데 왜 저만안보일까요..- app.js에 passport의 initialize(), session() 함수 선언되어있습니다. - cookie도 있습니다.- db에 user도 있습니다.