강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của episoderich
episoderich

câu hỏi đã được viết

Tạo Nodebird SNS với Vue

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

Viết

·

2K

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);
            }
         }
    ));
}
vuejsvuexnodejsawsmysqlssr

Câu trả lời 4

0

episoderich님의 프로필 이미지
episoderich
Người đặt câu hỏi

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

0

zerocho님의 프로필 이미지
zerocho
Người chia sẻ kiến thức

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

0

episoderich님의 프로필 이미지
episoderich
Người đặt câu hỏi

네 맞습니다 

0

zerocho님의 프로필 이미지
zerocho
Người chia sẻ kiến thức

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

Hình ảnh hồ sơ của episoderich
episoderich

câu hỏi đã được viết

Đặt câu hỏi