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
Post a Comment