Search code examples
node.jspassport.jspassport-local

Node.js app.post for passport-local signup form not working


I'm trying to setup passport local sign-in but the form doesn't do anything when submitted.

My app.js code:

var express = require('express');

var app = express();
app.use(express.static(__dirname + '/public'));
var credentials = require('./credentials.js');
app.use(require('cookie-parser')(credentials.cookieSecret));
app.use(require('body-parser').urlencoded({extended: false}));
var session = require('express-session');
app.use(session({
    resave: false,
    saveUninitialized: true,
    secret: 'keyboard cat'
}));
var passport = require('passport');
app.use(passport.initialize());
app.use(passport.session());

app.disable('x-powered-by');

var handlebars = require('express-handlebars').create({defaultLayout:'main'});

app.engine('handlebars', handlebars.engine);
app.set('view engine', 'handlebars');

app.set('port', process.env.PORT || 3000);
app.post('/login', function(req, res){console.log("body parsing", req.body)});

app.get('/login', function(req, res) {
    res.render('login');
});

The form html at /login for sign-ins:

<form action="/login" method="post">
    <div>
        <label>Username:</label>
        <input type="text" name="username"/>
    </div>
    <div>
        <label>Password:</label>
        <input type="password" name="password"/>
    </div>
    <div>
        <button type="submit">Submit</button>
    </div>
</form>

When I fill in username and password nothing prints out into the console from the post request. What do I have wrong?


Solution

  • I found that removing this AMP js script solves the issue. For some reason it breaks the post requests.

    <script async src="https://cdn.ampproject.org/v0.js"></script>