2014-11-21 2 views
3

가입 양식 테이블을 작성하고 passport-local을 사용합니다.하지만 express-validator을 추가하여 양식 데이터의 유효성을 검사하고 싶습니다.여권이있는 NodeJS 익스프레스 검사기

/* Handle Registration POST */ 
router.post('/signup', function(req, res) { 
    req.assert('email', 'A valid email is required').isEmail(); 
    var errors = req.validationErrors(); 

    if(errors){ //No errors were found. Passed Validation! 
     res.render('register', { 
     message: 'Mail type fault', 
     errors: errors 
     }); 
    } 
    else 
    { 
    passport.authenticate('signup', { 
     successRedirect: '/home', 
     failureRedirect: '/signup', 
     failureFlash : true 
    }); 
    } 
}); 

검증 작업이지만, 성공하면 다음 웹 페이지가 오랜 시간이없이 응답을 위해로드됩니다 :이 내 router/index.js 코드, 라우터에서 유효성 검사를 추가 할 수 있습니다. 나는 여권 문서를 찾았지만 그것을 고칠 생각은 없다.

은 내가 체크 아웃 jQuery를 사용할 수 있다고 생각 작업

/* Handle Registration POST */ 
router.post('/signup', passport.authenticate('signup', { 
    successRedirect: '/home', 
    failureRedirect: '/signup', 
    failureFlash : true 
})); 

입니다,하지만 난 그것을하지 않는다, 원산지 코드입니다. 왜냐하면 나는 여권과 함께 유효성 검사기를 사용하려고하기 때문에. 잘 작동해야 LocalStrategy보다는 라우터에서 검증을하는

답변

0

: LocalStartegy에서

passport.use('signup', new LocalStrategy({ 
    passReqToCallback: true 
}, function(req, username, password, callback) { 
    /* do your stuff here */ 
    /* req.assert(...) */ 
})); 
7

퍼팅 유효성 검사 코드는 개인적으로 처음 인증을 수행하고 사용 여권을 통과하면 것이다 작동해야하지만.

router.post('/login',function(req,res){ 

    req.checkBody('username', 'Username is required').notEmpty(); 
    req.checkBody('password', 'Password is required').notEmpty(); 

    //validate 
    var errors = req.validationErrors(); 

    if (errors) { 

     res.render('signup',{user:null,frm_messages:errors}); 

    } 
    else{ 
     passport.authenticate('login',{ 
      successRedirect:'/', 
      failureRedirect: '/login', 
      failureFlash : true 
     })(req,res); // <---- ADDD THIS 
    } 
}); 
+0

하지만 그것은 나에게 오류를 준 : 형식 오류 : req.checkBody는 함수가 아닙니다

다음과 같은 것을 고려 –

3
/* Handle Registration POST */ 
router.post('/signup', checkEmail, 
    passport.authenticate('signup', { 
     successRedirect: '/home', 
     failureRedirect: '/signup', 
     failureFlash : true 
    }); 
}); 

function checkEmail(req, res, next){ 
    req.checkBody('username', 'Username is required').notEmpty(); 
    req.checkBody('password', 'Password is required').notEmpty(); 
    //validate 
    var errors = req.validationErrors(); 
    if (errors) { 
     res.render('signup',{user:null,frm_messages:errors}); 
    } else { 
     next(); 
    } 
} 
내가 이런 짓을
관련 문제