2017-12-22 3 views
0

입력란이 비어있는 경우 노드/익스프레스 앱의 인증에 Passport.js를 사용합니다. 여권에 기본 메시지 "누락 된 자격 증명"이 표시됩니다. 어떻게 변경합니까?Passport.js가 기본 오류 메시지를 변경합니다.

passport.use('login', new LocalStrategy({ 
     usernameField: 'email', 
     passwordField: 'password' 
    }, 
    function(email, password, done) { 
     models.User.findOne({where: {email}}).then(user => { 
     if (!user) 
      return done(null, false, {message: 'Email not registered'}); 
     user.checkPassword(password).then(res => { 
      if (!res) 
      return done(null, false, {message: 'Incorrect username or password'}); 
      return done(null, user); 
     }); 
     }); 
    })); 

로그인 경로 : 뭔가 같은 형태 또는

여기서 뭔가 로그인에 대한 내 로컬 전략 작성하시기 바랍니다 말,

router.post('/login', passport.authenticate('login', { 
    successRedirect: '/', 
    failureRedirect: '/login', 
    failureFlash: true 
})); 
+0

모양을 ! 이메일 &&! 암호) return done (null, false, {message : "누락 된 자격 증명"})' – oneturkmen

+0

'models.User.findOne ...'줄 앞에 시도하십시오 – oneturkmen

+0

나는 이미 작동하지 않습니다. – void

답변

0

내가 그것을 가지고하는 것은 내가에 대한 선택적 콜백을 전달할 수 있습니다처럼 보이는 기본 기능을 재정의하는 기능 인증, 참조 용으로 감사합니다. 여기

수정 것 경로 :

router.post('/signup', (req, res) => { 
    passport.authenticate('signup', (err, user, info) => { 
    const body = req.body; 
    if (req.body.username === '' || req.body.email === '' || req.body.password === '') 
     info.message = 'Please fill the form'; 
    req.logIn(user, err => { 
     if (err) res.render('users/signup', info); 
     else res.redirect('/'); 
    }); 
    })(req, res); 
}); 
0

대안은 당신의 코드에 "badRequestMessage"를 추가하는

코드는 경우는 (`시도 할 수 있습니다이

router.post('/login', passport.authenticate('login', { 
    successRedirect: '/', 
    failureRedirect: '/login', 
    badRequestMessage : 'Please fill the form', 
    failureFlash: true 
})); 
관련 문제