从未调用过的 LocalStrategy 函数
LocalStrategy function never called
我尝试使用 express4 / passportjs 设置简单的本地策略身份验证,但从未调用身份验证函数:
这是我的代码
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
app.use(compress());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
/* AUTHENTIFICATION */
app.use(passport.initialize());
app.use(passport.session());
passport.serializeUser(function(user, done) {
done(null, user);
});
passport.deserializeUser(function(user, done) {
done(null, user);
});
passport.use(new LocalStrategy(
function(username, password, done) { //THIS FUNCTION IS NEVER CALLED
console.log("Local strategy");
}
));
app.post('/login', function(req, res) {
console.log("user : ", req.body.username);
console.log("password : ", req.body.password);
passport.authenticate('local', { successRedirect: '/',
failureRedirect: '/login' })
});
/* !AUTHENTIFICATION */
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'bower_components')));
app.use(express.static(path.join(__dirname, 'controllers')));
app.use(express.static(path.join(__dirname, 'modules')));
app.use('/', routes);
app.use('/users', users);
当我在 /login 中发送 post 请求时,我在日志中看到了用户名和密码,但是 password.authentificate
方法没有执行任何操作。
它应该调用 LocalStrategy
函数和 console.log('strategy') 但它没有。
有人知道如何解决吗?
谢谢
authenticate()'s function signature is standard Connect middleware
来自 here.
所以应该传递 req, res, next
的引用
因此您可以将它用作路由中间件
app.post('/login', passport.authenticate('local', { successRedirect: '/',
failureRedirect: '/login' }));
或
app.post('/login', function(req, res, next) {
passport.authenticate('local', { successRedirect: '/',
failureRedirect: '/login' })(req, res, next);
});
我尝试使用 express4 / passportjs 设置简单的本地策略身份验证,但从未调用身份验证函数: 这是我的代码
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
app.use(compress());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
/* AUTHENTIFICATION */
app.use(passport.initialize());
app.use(passport.session());
passport.serializeUser(function(user, done) {
done(null, user);
});
passport.deserializeUser(function(user, done) {
done(null, user);
});
passport.use(new LocalStrategy(
function(username, password, done) { //THIS FUNCTION IS NEVER CALLED
console.log("Local strategy");
}
));
app.post('/login', function(req, res) {
console.log("user : ", req.body.username);
console.log("password : ", req.body.password);
passport.authenticate('local', { successRedirect: '/',
failureRedirect: '/login' })
});
/* !AUTHENTIFICATION */
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'bower_components')));
app.use(express.static(path.join(__dirname, 'controllers')));
app.use(express.static(path.join(__dirname, 'modules')));
app.use('/', routes);
app.use('/users', users);
当我在 /login 中发送 post 请求时,我在日志中看到了用户名和密码,但是 password.authentificate
方法没有执行任何操作。
它应该调用 LocalStrategy
函数和 console.log('strategy') 但它没有。
有人知道如何解决吗?
谢谢
authenticate()'s function signature is standard Connect middleware
来自 here.
所以应该传递 req, res, next
的引用
因此您可以将它用作路由中间件
app.post('/login', passport.authenticate('local', { successRedirect: '/',
failureRedirect: '/login' }));
或
app.post('/login', function(req, res, next) {
passport.authenticate('local', { successRedirect: '/',
failureRedirect: '/login' })(req, res, next);
});