2016-08-19 5 views
2

Ich benutze Passpjs für die Authentifizierung und Sitzung. Ich bekomme den ussername von mysql und das Eingabefeld von Client-Seite, aber wenn die done bei der Überprüfung aufgerufen wird, bekomme ich done is not a function.getan ist kein Funktionsfehler im Pass js

Die server.js:

var express = require('express'); 
var app = express(); 
var path = require('path'); 
var bodyParser = require('body-parser'); 
var passport = require('passport'); 
var LocalStrategy = require('passport-local').Strategy; 
var cookieParser = require('cookie-parser'); 

// app.use(app.router); 
app.use(passport.initialize()); 

app.use(passport.session()); 
app.use(bodyParser.json()); 

app.use(express.static(__dirname+"/staticFolder")); 

var mysql = require('mysql'); 
var connection = mysql.createConnection({ 
    host:'127.0.0.1', 
    user:'root', 
    password:'sdf', 
    database:'abc' 
}); 
connection.connect(function(err){ 
    if(err){ 
     throw err; 
    } 
}); 

passport.serializeUser(function(user,done){ 
    console.log("serializeUser" + user); 
    done(null,user.body.username); 
}) 
passport.deserializeUser(function(id, done) { 
    done(null, user); 

}); 


passport.use(new LocalStrategy({ 
    passReqToCallback : true 

},function(username, password, done) { 

    connection.query("select * from employeedetails where empid = "+username.body.username,function(err,user,w){ 
    if(err) 
    { 
     console.log(err+"fml $$$$$$$$$$"); 
     return done(err);   
    } 
    if(username.body.password == user[0].password){ 
    console.log(user[0].empid+" login"); 
    return done(null,user[0].empid); 
    } 
    else{ 
    return done(null,false,{message: 'Incorrect password'}); 
    console.log(user[0].empid+" fml"); 
    } 

    }); 

})); 



app.get('/',function(request,response){ 
    response.sendFile(__dirname+"/staticFolder/view/"); 
}) 

app.post('/saveEmployeeDetails',function(request,response){ 
    response.end(); 
}) 

app.get('/login',function(request,response){ //the file sent when /login is requested 
    response.sendFile(__dirname+"/staticFolder/view/login.html"); 
}) 

app.post('/loginCheck',passport.authenticate('local', { 
      successRedirect : '/', 
      failureRedirect : '/login', 
      failureFlash : true // 
    }), 
     function(req, res) { 
      console.log("hello"); 
      res.send("valid"); 
      res.redirect('/'); 
    }); 

Antwort

3

Können Sie bitte auf den folgenden Link beziehen, die über die gleichen Fehler spricht

https://github.com/jaredhanson/passport/issues/421

Er sagt, wenn Sie die (passReqToCallBack: true) entfernen Optionen der Fehler tritt nicht auf

+0

wie das Anfrageobjekt dann übergeben? – boo

+0

Dies ist ein optionaler Parameter und Sie können ihn übergeben. In Ihrem Fall, wenn Sie den Fehler erhalten, versuchen Sie, den optionalen Parameter zu entfernen und sehen, ob es funktioniert ... passReqToCallback 'wenn' true', 'req' ist das erste Argument für die Überprüfung Rückruf (Standard:' false') – anujjain0801

Verwandte Themen