I am trying to break down this passport.js example to its most basic elements. I keep getting a 401 (Unauthorized) message and can't figure out why. Any help would be greatly appreciated.
Thank you!
Node.js file:
var http = require('http'),
express = require('express'),
passport = require('passport'),
LocalStrategy = require('passport-local').Strategy,
flash = require('connect-flash');
var port = process.env.PORT || 8080;
passport.serializeUser(function(user, done) {
done(null, user);
});
passport.deserializeUser(function(obj, done) {
done(null, obj);
});
passport.use(new LocalStrategy(
function(username, password, done) {
console.log("LocalStrategy working...");
return done(null, { id: 1, username: 'Joe', password: 'schmo'});
}
));
var app = express();
app.configure(function(){
app.use(express.static(__dirname + '/app'));
app.use(express.cookieParser('big secret'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieSession());
app.use(flash());
app.use(passport.initialize());
app.use(passport.session());
app.use(app.router);
});
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
app.post('/login', passport.authenticate('local'), function (req, res) {
console.log("authenticated....");
res.end();
});
app.listen(port);
Passport is a popular, modular authentication middleware for Node. js applications. With it, authentication can be easily integrated into any Node- and Express-based app. The Passport library provides more than 500 authentication mechanisms, including OAuth, JWT, and simple username and password based authentication.
The local authentication strategy authenticates users using a username and password. The strategy requires a verify callback, which accepts these credentials and calls done providing a user.
You can reset or change passwords using 2 simple functions in passport-local-mongoose. They are setPassword function and changePassword functions. Normally setPassword is used when the user forgot the password and changePassword is used when the user wants to change the password.
A Passport strategy for authenticating with a JSON Web Token. This module lets you authenticate endpoints using a JSON web token. It is intended to be used to secure RESTful endpoints without sessions.
All users of new express.js (4.x and higher) together with passport.js could experience 'Missing credentials' trouble just because POST data is not parsed by default. To fix it install body-parser npm install body-parser
and use in your code:
var bodyParser = require( 'body-parser' );
app.use( bodyParser.urlencoded({ extended: true }) );
Good point from @ivarni: app.use( bodyParser.urlencoded({ extended: true }) );
must be placed before injecting any passport middleware.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With