2017-03-25 1 views
0

잘 작동하는 기본 사용자 등록 양식을 만들었지 만 암호 확인 필드를 추가해야합니다. 다음과 같이Passport로 비밀번호 확인

나의 양식은 다음과 같습니다 사용자 안타 제출하면

<div class ="container form"> 

<div class="jumbotron form"><h2><i class="fa fa-user-plus" aria-hidden="true"></i> Signup</h2></div> 
<form action = "/register" method="POST"> 
<div class="form-group"> 
    <i class="fa fa-user" aria-hidden="true"></i> 
    <label for="username">Username</label> 
     <input type = "text" class = "form-control" placeholder = "Enter username" name="username"> 
</div> 
<div class="form-group"> 
    <i class="fa fa-key" aria-hidden="true"></i> 
    <label for="password">Password</label> 
     <input type = "password" class ="form-control" placeholder = "Enter password" name="password1"> 
</div> 
<div class="form-group"> 
    <i class="fa fa-key" aria-hidden="true"></i> 
    <label for="password">Confirm password</label> 
     <input type = "password" class ="form-control" placeholder = "Enter password" name = "password"> 
</div> 
<div class="form-group"> 
<i class="fa fa-picture-o" aria-hidden="true"></i> 
    <label for="img">Image</label> 
     <input type = "text" class ="form-control" placeholder = "Enter image URL" name = "image"> 
</div> 
    <button type ="submit" class="btn btn-primary btn-lg">Signup</button> 
</form> 
</div> 

그래서, 나는 분명 그렇지 않은 경우와 일치하고, 오류가 발생되는 2 암호 입력이 필요합니다.

나는 authenitcation을 위해 Passport를 사용하고 있습니다.

// passport configuration 
app.use(require("express-session")({ 
secret: "maidenJones", 
resave: false, 
saveUninitialized: false 
})); 

app.use(passport.initialize()); 
app.use(passport.session()); 
passport.use(new LocalStrategy(User.authenticate())); 
passport.serializeUser(User.serializeUser()); 
passport.deserializeUser(User.deserializeUser()); 
app.use(expressSanitizer()); 

app.use(function(req, res, next){ 
res.locals.currentUser = req.user; 
res.locals.error = req.flash("error"); 
res.locals.success = req.flash("success"); 
next(); 
}); 

등록 경로 : 나는 다음과 같은 설정을 가지고

router.post("/register", function(req, res){ 
var newUser = new User({username: req.body.username, image: req.body.image}); 
User.register(newUser, req.body.password, function(err, user){ 
if(err){ 
    res.redirect("/blogs"); 
    console.log(err); 
} 
passport.authenticate("local")(req, res, function(){ 
    res.redirect("/blogs"); 
}); 
}); 
}); 

답변

0

당신은 LocalStrategy 여권 내부에 등록 논리를 이동해야 암호 확인 검사를 구현하기 위해 어디서부터 시작 확실하지 및 이 전략을 경로의 미들웨어로 사용하십시오.

예 : 여기

passport.use(new LocalStrategy({ 
    usernameField: 'email', 
    passwordField: 'passwd' 
}, 
function(req, username, password, done) { 
    // User register logic 
    } 
)); 

router.post('/register', 
    passport.authenticate('local', { failureRedirect: '/register' }), 
    function(req, res) { 
    res.redirect('/blogs'); 
}); 

대한 추가 정보 : 답장을 passport-localstrategy

+0

감사합니다. 내가 완전히 이해하는지 모르겠다. 두 암호 필드가 일치하는 곳은 어디입니까? 이것을 내 코드 – DaveB1

+0

에 구현하는 방법을 모르는 경우 jquery 또는 angle을 사용하여 제출하기 전에 클라이언트 측에서 양식의 유효성을 검사해야합니다. 그런 경우가 아니며 서버 측에서 유효성을 검사하려는 경우 (이유를 볼 수 없음), 여전히 로컬 스트 레이지 내에서 수행해야합니다. –

+0

죄송합니다. 저는 이것에 초심자가 조금 있습니다. 그래서 본질적으로 패스워드 확인 필드는 제출되지 않을 것입니까? 비교할 분야 일 뿐이에요? – DaveB1