• 카테고리

    질문 & 답변
  • 세부 분야

    프론트엔드

  • 해결 여부

    미해결

'Missing credentials' 이 뜹니다.. passport 문제

21.01.29 16:55 작성 조회수 1.47k

0

일단,

1. 프론트로 부터 받아온 req.body 를 찍으니 아래와 같이 잘 넘어 왔구요.

그 다음 아래 app.js info로 넘어온 데이터가 저렇게 missing credentials로 나옵니다.

이전에 다른 수강생분께서 질문주신대로 잘 맞춰서 했다고 생각하는데 

어디가 이상이 있는건지 문의 드립니다..

2. 백엔드 app.js 에서 로그인 받는 부분 입니다.

app.post('/user/login'async(reqresnext=> {
    console.log('/user/login-----> 'req.body);
    try {
        //  -> passport LocalStrategy 으로 전송.
        passport.authenticate('local', (erruserinfo=>{
            if (err) {
                console.log('[post]/user/login (Error) 'err);
                return next(err);
            }
            if (info) {
                console.log('[post]/user/login (Fail) 'info);
                return res.status(401).send(info);
            }
            console.log('[post]/user/login 'user);
             // 세션에다 사용자 정보 저장( 어떻게 저장할 것인가? )
            return req.login(userasync(err=> {
                if (err) {
                    return next(err);
                }
                return res.json(user);
            });
        })(resreqnext); 
    }
    catch(err) {
        
    }
});

3. passport/local.js 코드 입니다.

여기에서도 usernameField랑 passwordField에 저기 1번에서 넘어온 parameter그대로 사용해서 해줬는데요.

왜 자꾸 missing credentails가 뜨는지... 도통 해결을 못하겠네요 ㅜㅜ

const passport = require('passport');
const { StrategyLocalStrategy } = require('passport-local');
const db = require('../models');
const bcrypt = require('bcrypt');
module.exports = () => {
    passport.usenew LocalStrategy(
        {
            usernameField: 'myid'// req.body.myid
            passwordField: 'password'//req.body.password

        }, async (myidpassworddone=> {
            try {
                console.log('******* passport / local 'myidpassword);
    
                // 사용자 여부 체크
                const existUser = await db.User.findOne({
                    where: { myid }
                });
                if (!exexistUser) {
                    // done(에러, 성공, 실패)
                    return done(nullfalse, { reason: '존재 하지 않는 사용자 입니다. ' }); 
                }

                // 비밀번호 체크
                const result = await bcrypt.compare(passwordexistUser.password);
                // 만약 패스워드가 일치 하지 않으면, false
                if (result) {
                    return done(nullexistUser);
                } else {
                    return done(nullfalse, { reason: '비밀번호가 틀립니다.' });
                }

            } catch (err) {
                console.log(err);
                return done(err);
            }
         }
    ));
}

답변 4

·

답변을 작성해보세요.

0

아 해결되었습니다.. 감사합니다. ㅜㅜ 이부분이 가장 빡새용

0

아, (res, req, next) 잘못 쓰셨네요. (req, res, next)입니다.

0

네 맞습니다 

0

req.body 이미지가 짤렸는데 nickname, myid, password 이렇게 들어있는건가요?