在使用PassportJS进行身份验证时,如果您需要将其他表单字段传递给本地身份验证策略,可以通过以下方法实现:
authenticate
方法。const express = require('express');
const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
const app = express();
app.use(express.urlencoded({ extended: false }));
passport.use(new LocalStrategy(
function(username, password, done) {
// 在这里实现您的本地身份验证策略
}
));
app.post('/login', function(req, res, next) {
passport.authenticate('local', function(err, user, info) {
if (err) { return next(err); }
if (!user) { return res.redirect('/login'); }
req.logIn(user, function(err) {
if (err) { return next(err); }
return res.redirect('/users/' + user.username);
});
})(req, res, next);
});
authenticate
方法中,您可以通过req.body
访问其他表单字段。例如,如果您需要访问名为email
的字段,可以这样做:app.post('/login', function(req, res, next) {
passport.authenticate('local', function(err, user, info) {
if (err) { return next(err); }
if (!user) { return res.redirect('/login'); }
req.logIn(user, function(err) {
if (err) { return next(err); }
const email = req.body.email;
// 在这里处理email字段
return res.redirect('/users/' + user.username);
});
})(req, res, next);
});
通过这种方式,您可以将其他表单字段传递给PassportJS的本地身份验证策略,并在验证成功后进行处理。
领取专属 10元无门槛券
手把手带您无忧上云