javascript - Node passport-local strategy always fails -
i'm using node.js passport module build authentication process, , i'm unable figure out why verification fails, when return success every time verification callback. keep example simple, i'm using passport-local strategy no persistent storage:
var passport = require('passport'); var localstrategy = require('passport-local').strategy; var express = require('express'); var server = express(); passport.serializeuser(function (user, done) { done(null, user); }); passport.deserializeuser(function (id, done) { done(null, id); }); passport.use(new localstrategy( function (username, password, done) { // perform lookup , verification here. // instead return valid user object every time. var user = { username: username }; return done(null, user); } )); server.post('/login', passport.authenticate('local', { failureredirect: '/failure' }), function (req, res) { res.send('access granted'); }); var port = process.env.port || 3000; server.listen(port, function() { console.log('listening on port ' + port); });
similar questions have been solved adding placeholder user serialization/deserialization methods, i've got in place.
here's curl call hit above username , password:
curl -x "post" "http://127.0.0.1:3000/login" \ --data-urlencode "username=alice" \ --data-urlencode "password=supersecret"
when perform post, response contains http 302 failure redirect /failure
every time, though i'm returning null
(no error), , dummy user object in localstrategy
callback. overlooking?
i overlooking 2 things:
- there no call
passport.initialize()
middleware - i wasn't parsing request bodies because express doesn't include out of box
now require block @ top includes both of missing items, , returns 200 ok when posting /login
:
var passport = require('passport'); var localstrategy = require('passport-local').strategy; var express = require('express'); var bodyparser = require('body-parser'); var server = express(); server.use(passport.initialize()); //server.use(passport.session()); -- persistent login sessions server.use(bodyparser.urlencoded({ extended: true }))
Comments
Post a Comment