2017-01-12 15 views
0

以下は私が作業しているコードですが、実行中にエラーが発生しています。 同じページにあるログインフォームと登録フォームのルート作成にお役立てください。私はこのコードで登録フォームを提出していた場合 、私はあなたがここに複数の問題を抱えているかもしれないと思う「バッドリクエスト」Nodejsでのパスポート認証

var express = require ('express'); 
var app = express(); 
var path= require('path'); 
var bodyParser = require('body-parser'); 
var mongoose = require("mongoose"); 
var nodemailer = require('nodemailer'); 
var transporter = nodemailer.createTransport(); 
var smtpTransport = require('nodemailer-smtp-transport'); 
var passport = require('passport'); 
var LocalStrategy = require('passport-local'); 
var passportLocalMongoose = require('passport-local-mongoose'); 
var User = require('./models/user'); 


app.set('port', process.env.PORT || 3000); 
app.use(bodyParser.json()); // support json encoded bodies 
app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies 

app.use(express.static(path.join(__dirname, 'public'))); 
app.set("view engine", "ejs"); 
app.use(require('express-session')({ 
    secret: 'Working on enroll Medicare', 
    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()); 

mongoose.connect("mongodb://localhost/registration"); 
app.post('/login-register.html', function(req,res) 
{ 
      var username = req.body.usernameregister; 
      var email = req.body.emailregister; 
      var password1 = req.body.password1register; 
      var password2 = req.body.password2register; 
     password1, password2: password2} 
     User.register(new User({username: username, email: email}), password1, function(err, user){ 
      if(err){ 
      console.log(err); 
      return res.render('error'); 
      } 
      passport.authenticate('local')(req, res, function(){ 
       res.redirect("/secret"); 
      }); 
     }); 
}); 

ログインページ

app.post("/login-register.html", passport.authenticate('local', { 
    succesRedirect: "/secret", 
    failureRedirect: "/error" 
}), function(req, res){ }); 

答えて

1

というエラーを取得しています。確認するには、いくつか確認してください:

  • あなたはpassport.use(new LocalStrategy(User.authenticate()));です。 User.authenticate()が返すものはわかりませんが、引数付きの関数を返す必要がありますfunction(username, password, done) {...}
  • emailをユーザー名として使用しているようです。あなたは戦略のオプションにusernameFieldを追加する必要があります。new LocalStrategy({usernameField: 'email'}, function(email, password, done){...})
  • 私も返されるエラーは、問題についてのより多くの情報を提供してかどうかを確認するためにpassport.authenticate機能でカスタムコールバックを使用することが本当に便利見つけた:passport.authenticate('local', function(err, user, info) {console.log(err, user, info)})
関連する問題