首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用PassportJS,如何将其他表单字段传递给本地身份验证策略?

在使用PassportJS进行身份验证时,如果您需要将其他表单字段传递给本地身份验证策略,可以通过以下方法实现:

  1. 在路由处理函数中,将请求体(request body)解析为一个对象,并将其传递给PassportJS的authenticate方法。
代码语言:javascript
复制
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);
});
  1. authenticate方法中,您可以通过req.body访问其他表单字段。例如,如果您需要访问名为email的字段,可以这样做:
代码语言:javascript
复制
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的本地身份验证策略,并在验证成功后进行处理。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券