Giuan Adauto
Giuan Adauto

Reputation: 15

Getting a Bad request on passport on Node

I'm trying to run some basic tests with passport on Node, and when I try to access the route localhost:3000/login I get a Bad request 400. Here is the code:

var express = require('express');
var app = express();
var jwt = require('jsonwebtoken');
var passport = require('passport');

var LocalStrategy = require('passport-local').Strategy;

passport.use(new LocalStrategy(
    function(username, password, done) {
        var user = {
            username: "name",
            password: "password123"
        }

    return done(null, user); 
    }
));




app.post('/login',
  passport.authenticate('local', {session: false}),
  function(req, res) {
    req.user.name = "Giuan";
    res.send(req.user.name);
    //res.redirect('/users/' + req.user.username);
  });

app.listen(3000, ()=>{
    console.log('Running on port 3000');
})

Upvotes: 0

Views: 1020

Answers (3)

Chinecherem Tina
Chinecherem Tina

Reputation: 59

I was also facing the same issue and just fixed it by adding usernameField and passwordField keys to the localStrategy options.

new localStrategy({
    usernameField: 'email',
    passwordField: 'password'
}, function (email, password, done) {
  // Do something here
});

Upvotes: 0

Ramon
Ramon

Reputation: 155

Try this:

var express = require('express');
var app = express();
var jwt = require('jsonwebtoken');
var passport = require('passport');
var bodyParser = require('body-parser');

//if you are getting the info (username and password) through the body 
//of the http request you need to use body-parser
app.use(bodyParser());

var LocalStrategy = require('passport-local').Strategy;

passport.use(new LocalStrategy(
    function(username, password, done) {
        var user = {
            username: "name",
            password: "password123"
        }

    return done(null, user); 
    }
));


app.use(passport.initialize());

app.post('/login',
  passport.authenticate('local', {session: false}),
  function(req, res) {
    req.user.name = "Giuan";
    res.send(req.user.name);
    //res.redirect('/users/' + req.user.username);
  });

app.listen(3000, ()=>{
    console.log('Running on port 3000');
})

Upvotes: 1

Sachin
Sachin

Reputation: 2922

Use app.use(passport.initialize()); you haven't initialize passport in your code.

var express = require('express');
var app = express();
var jwt = require('jsonwebtoken');
var passport = require('passport');

var LocalStrategy = require('passport-local').Strategy;

passport.use(new LocalStrategy(
    function(username, password, done) {
        var user = {
            username: "name",
            password: "password123"
        }

    return done(null, user); 
    }
));


app.use(passport.initialize());

app.post('/login',
  passport.authenticate('local', {session: false}),
  function(req, res) {
    req.user.name = "Giuan";
    res.send(req.user.name);
    //res.redirect('/users/' + req.user.username);
  });

app.listen(3000, ()=>{
    console.log('Running on port 3000');
})

Upvotes: 0

Related Questions