Node.js passport本地身份验证没有调用中间件



我正在尝试使用带有passport的本地身份验证。根据passport文档,一切似乎都很容易,但出于某种原因,当我调用passport.authenticate时,中间件没有运行。只是什么都没发生。

当我提交注册表单时,会调用注册后函数。我得到了";接收到";然而,在我的浏览器中,我看不到passport.use回调中的任何console.log。

服务器:

const express = require('express');
const morgan = require('morgan');
const expressHandleBars = require('express-handlebars');
const path = require('path');
const flash = require('connect-flash');
const session = require('express-session');
const mysqlStore = require('express-mysql-session');
const passport = require('passport');
const { database } = require('./keys');
// Initializations
const app = express();
require('./lib/passport');

// Setting 
app.set('port', process.env.PORT || 4000); 
app.set('views', path.join(__dirname, 'views'));
app.engine('.hbs', expressHandleBars({
defaultLayout: 'main',
layoutsDir: path.join(app.get('views'), 'layouts'),
partialsDir: path.join(app.get('views'), 'partials'),
extname: '.hbs',
helpers: require('./lib/handlebars')
}));
app.set('view engine', '.hbs')
// Middleware
app.use(session({
secret: 'whatever',
resave: false,
saveUninitialized: false,
store: new mysqlStore(database)
}));
app.use(morgan('dev'));
app.use(express.urlencoded({extended: false}));
app.use(express.json());
app.use(flash());
app.use(passport.initialize());
app.use(passport.session());
// Global variables
app.use((req, res, next) => {
app.locals.success = req.flash('success');
next();
});
// Routes
app.use(require('./routes'));
app.use(require('./routes/authentication'));
app.use('/links', require('./routes/links'));

// Public
app.use(express.static(path.join('__dirname', 'public')));
// Starting the server
app.listen(app.get('port'), () => {
console.log('Server on port', app.get('port'));
});

Passport配置文件(lib/papassport.js(:

const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
const pool = require('../database');
const helpers = require('./helpers');
passport.use('local-signup', new LocalStrategy({
usernameField: 'username',
passwordField: 'password',
passReqToCallback: true
}, async function(req, username, password, done) {

console.log("Authenticated!!");
console.log(req.body);
}
));

路由器调用authenticate(routes/authenticate.js(:

const express = require('express');
const passport = require('passport');
const router = express.Router();

router.get('/signup', (req, res) => {
res.render('auth/signup');
});

router.post('/signup', (req, res) => {

passport.authenticate('local-signup', {
successRedirect: '/profile',
failureRedirect: '/signupFailure',
failureFlash: true
}, (req, res) => {
res.send("Authenticating"); 
});
//console.log(req.body);
res.send('Received');

});
router.get('/profile', (req, res) => {
res.send('This is your profile');
});

module.exports = router;

Passport.authenticate((返回一个中间件函数,您没有调用它。

passport.authenticate('local-signup', {
successRedirect: '/profile',
failureRedirect: '/signupFailure',
failureFlash: true
}, (req, res) => {
res.send("Authenticating"); 
})(req, res)

最新更新