4 글 보임 - 1 에서 4 까지 (총 4 중에서)
-
글쓴이글
-
2023년 1월 30일 02:27 #64866
정중식참가자passport 실패 메시지를 프론트에서 받아오려면 어떡해야하나요? 먼저, 패스포트는 이런식으로 짯고 passport
passport.use( new LocalStrategy( { usernameField: 'userId', passwordField: 'password', session: true, passReqToCallback: false, }, async (userId, password, done) => { const user = await User.findOne({ userId });
if (!user || user === null) { return done(null, false, { errors: [{ msg: '사용자가 존재하지 않습니다.' }], }); }
const isMatch = bcrypt.compare(password, user.password); if (!isMatch) { return done(null, false, { errors: [{ msg: '비밀번호가 다릅니다.' }], }); }
return done(null, user); } ) ); }; 프론트에서 가져오는 코드는 이렇게했습니다. login.js $.ajax({ method: 'POST', url: '/login', data: { userId: userId.value, password: userPassword.value, }, }) .done((data) => { console.log(data); }) .fail((request, status, error) => { // console.log(request); // message.innerHTML = request?.responseJSON.errors[0].msg; // console.log(request.responseJSON.errors); console.log(request); }); errors 메시지를 가져오고싶은데 방법을 도저히 모르겠어요...
2023년 1월 30일 09:46 #64887
codingapple키 마스터https://stackoverflow.com/questions/15711127/express-passport-node-js-error-handling ajax로 로그인할거면 app.post 안에 passport어쩌구 이런거 씁시다
2023년 1월 30일 12:29 #64919
정중식참가자안녕하세요 선생님 보내주신 링크 토대로 이런식을 짜봤는데 문제가있어서 또 왔습니다.
router.post('/login', (req, res, next) => { passport.authenticate( 'local', { successRedirect: '/', failWithError: true }, (err, user, info) => { if (err) { return next(err); } if (!user) { return res.status(401).json({ errors: [{ msg: '사용자가 존재하지 않습니다.' }], }); }
return res.send({ success: true, message: 'authentication succeeded' }); } )(req, res, next); }); passport인증코드에서 아이디가 틀리던, 비밀번호가 틀리던 !user로 판단해서 에러메시지가 동일하게 발생합니다. 저는 로그인한 사용자유저아이디가없고, 비밀번호가 틀리다는 에러메시지를 각각 띄우고싶은데 .. 제가 잘못코드를적고있는걸까요?
-
글쓴이글
4 글 보임 - 1 에서 4 까지 (총 4 중에서)
- 답변은 로그인 후 가능합니다.