node.js - Strategy not being called by authenticate -


i'm new node , trying simple local login , running using passport.js. looks me strategy have set not being run when authenticate function called.

       module.exports = function(app) { var mongo = require('./mongoose-db.js'); var brands = require('./app/brands.js');  // brand admin page //  var passport = require('passport'); var localstrategy = require('passport-local').strategy;  passport.use(new localstrategy( {//this strategy why not being run?     usernamefield: 'admin_username',     passwordfield: 'admin_password'   },    function(username, password, done) {console.log('here 7');     process.nexttick(function () {       console.log('here 8');       // find user username.  if there no user given       // username, or password not correct, set user `false`       // indicate failure , set flash message.  otherwise, return       // authenticated `user`.       mongo.findadminbyusername(username, function(err, user) { console.log('here 9');         if (err) { return done(err); }         if (!user) { return done(null, false, { message: 'unknown admin ' + username }); }         if (user.password != password) { return done(null, false, { message: 'invalid password' }); }         return done(null, user);       })     });   } ));   passport.serializeuser(function(user, done) {   done(null, user.id); });  passport.deserializeuser(function(id, done) {   findbyid(id, function (err, user) {     done(err, user);   }); });  app.get('/brand_admin', function(req, res){     console.log('here 1');   res.render('admin_login', { user: req.user, message: req.session.messages }); });   app.post('/brand_admin', function(req, res, next) {     console.log('user: ');     console.log(req.user);     res.send('ok');     passport.authenticate('local', function(err, user, info) {         console.log(user);     if (err) { return next(err) }     if (!user) {console.log(req.session.messages);       req.session.messages =  [info.message];     console.log('here 4');     console.log(req.session.messages);       return res.redirect('/brand_admin')     }     console.log('here 5');     req.login(user, function(err) {       if (err) { return next(err); console.log('here 6');}       return res.redirect('/');     });   })(req, res, next); }); 

the ejs is:

<body>  <head> admin login </head>  <form id="brand_edit" action="/brand_admin" method="post" >         <fieldset>          login: <input type="text" name="admin_login" > <br>          password: <input type="password" name="admin_password" >          <input type="submit" name="action" value="login"/>          </fieldset>  <a href="">forgotten password?</a>  </form>  </body> 

the output i'm getting form submission is:

steve agrgegerfe { id: 1,   username: 'steve',   password: 'agrgegerfe',   email: 'bob@example.com' } false undefined here 4 [ 'missing credentials' ] here 1 

the strategy not running can't figure out why? can help? 1 thing affecting using passport facebook login in section of application..

i think not calling passport properly. needs in route chain. try this:

 // configure passport correct fields passport.use(new localstrategy({   usernamefield: 'admin_login',   passwordfield: 'admin_password' }, function (username, password, done) {   ... });   app.post('/brand_admin', passport.authenticate('local'), function (req, res) {  // req.user defined  console.log(req.user);  res.send('ok'); });  

Comments