묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
passport로 로그인 에러 시 payload 전달 방법
강사님, 안녕하세요. 혼자서 해보려다가 도저히 모르겠어서 질문 드립니다. 로그인 에러 시 각각 상황에 맞는 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 값을 가져오게 할 방법이 있을까요?
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
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 위 사진들로만 보셔도 될 것 같습니다!