2017-03-25 17 views
0

うまく動作する基本的なユーザー登録フォームを作成しましたが、確認パスワードフィールドを追加する必要があります。パスポートでのパスワード確認

次のように私のフォームは次のとおりです。ユーザーのヒットが提出したときに

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

が登録ルート:あなたの登録ロジックは、パスポートLocalStrategy内を移動する必要があるパスワードの確認チェック

答えて

0

を実装するために開始する

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

わからないとし、その戦略をルート内のミドルウェアとして使用します。

例:ここ

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

感謝。私は完全に理解しているか分からない。これにより、2つのパスワードフィールドが一致することが確認されます。これを私のコード – DaveB1

+0

に実装する方法がわからない場合は、jqueryまたはangleを使用して送信する前に、クライアント側でフォームを検証する必要があります。それが事実ではなく、あなたがサーバ側でそれを検証したいのであれば(なぜそれが見えないのか)、あなたはまだローカル戦略の中でそれをしなければならない。 –

+0

申し訳ありませんが、私はこれに少し初心者です。だから本質的にパスワード確認フィールドは提出されませんでしたか?それは単に比較するフィールドですか? – DaveB1

関連する問題