inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

passport로 로그인 에러 시 payload 전달 방법

미해결

[리뉴얼] React로 NodeBird SNS 만들기

강사님, 안녕하세요. 혼자서 해보려다가 도저히 모르겠어서 질문 드립니다. 로그인 에러 시 각각 상황에 맞는 logInError를 안내하고 싶어서 제작 중인데, 회원가입할때도 다른 작업할때도 에러나면 payload 값이 잘 나오던데, 로그인 할때만 에러나면 Payload 값이 undefined 로 나오네요. 회원가입한적 없는 아이디일때 "존재하지 않는 이메일입니다" 아이디는 있으나 비밀번호가 틀렸을때 "비밀번호가 틀렸습니다" /back/routes/user.js 에서 //SignUp router . post ( '/' , isNotLoggedIn , async ( req , res , next ) => { try { *** if ( exUser ) { return res . status ( 403 ). json ( '이미 가입된 아이디입니다.' ); } *** } catch ( error ) { console . error ( error ); next ( error ); } }); 이렇게 json 형태로 에러 메시지를 적어주면 front로 전달 된다고 배웠고, 회원가입이나 다른 호출은 다 잘 출력됩니다. 그런데 login 쪽만 payload(logInError)가 undefined 로 나옵니다. (개발자도구 네트워크에서는 메시지가 잘 찍힙니다.) router . post ( '/login' , isNotLoggedIn , ( req , res , next ) => { passport . authenticate ( 'local' , ( err , user , info ) => { *** if ( info ) { return res . status ( 401 ). json ( info . reason ); } *** })( req , res , next ); }); /back/passport/local.js *** module . exports = () => { passport . use ( new LocalStrategy ( *** async ( userid , password , done ) => { try { *** if (! user ) { return done ( null , false , { reason : '존재하지 않는 이메일입니다!' }); } *** return done ( null , false , { reason : '비밀번호가 틀렸습니다.' }); } catch ( error ) { *** } } ) ); }; //회원가입 페이지 /front/reducers/user.js //회원가입 페이지 //로그인 페이지 회원가입과 다르게 로그인은 passport가 쓰여서인듯 한데, 에러 났을때 payload 값을 가져오게 할 방법이 있을까요?

  • passport
  • redux
  • payload
  • react
  • nodejs
  • express
  • Next.js
Graham 댓글 1 좋아요 1 조회수 554

redux devtools 에 action 은 넘어오는데 넘어온 payload가 state에 가지는 않습니다.

미해결

따라하며 배우는 노드, 리액트 시리즈 - 기본 강의

일단 본론 부터 말씀드리면 redux devtools 에 action 은 넘어오는데, 넘어온 값이 state 에 가지는 않습니다. 과정을 나열해보자면, user_action 에서 post 로 로그인 정보를 보내고 requset 를 받아와서 그 값을 LoginPage(로그인페이지)에서 onSubmitHandler에서 dispatch 해주는 과정에서는 이상이 없는 것 같습니다. 그래서 redux devtools 에서도 정상적으로 action 이 나오구요, db도 잘 연결되어 있는 것 같습니다. 그러면 reducer 쪽이 문제란 소린데, 정상적으로 action 객체 받아와서 그냥 state에 action.payload를 넣어주기만 하면 되는데 안된단 말이죠? ;; 왜 그럴까요?... 정말 궁금합니다. 깃헙 주소입니닫 https://github.com/BomUlUL/NodeReact 위 사진들로만 보셔도 될 것 같습니다!

  • action
  • react
  • state
  • nodejs
  • payload
김동현 댓글 1 좋아요 0 조회수 802

인기 태그

인프런 TOP Writers

주간 인기글