我尝试使用 passport.js 对用户进行身份验证,但它给了我一个错误**服务器响应状态为 400(错误请求)**

Posted

技术标签:

【中文标题】我尝试使用 passport.js 对用户进行身份验证,但它给了我一个错误**服务器响应状态为 400(错误请求)**【英文标题】:I trying authenticate a user using passport.js but it gives me a error **the server responded with a status of 400 (Bad Request)** 【发布时间】:2021-02-04 03:51:13 【问题描述】:

当我注册用户时,它成功保存到数据库中,但是当我对用户进行身份验证时,它给了我 400 (Bad Request) 错误

在此我使用 passport.js、passport-local、passport-local-mongoose 进行身份验证

这是我的代码:

mongoose.connect("mongodb://localhost:27017/logindb", useNewUrlParser: true);
    
const userSchema = new mongoose.Schema(
    username: String,
    password: String
);
    
userSchema.plugin(passportLocalMongoose);        
    
const User = mongoose.model('User', userSchema);
passport.use(User.createStrategy());

serializeUser 和 deserializeUser 的代码:

passport.serializeUser(User.serializeUser());    
passport.deserializeUser(User.deserializeUser());

这是我注册用户和验证用户的代码:

app.post('/register', function(req, res)
    
        User.register(username: req.body.email, req.body.password, function(err, user) 
            if (err) console.log(err); res.redirect('/'); 
            else
                passport.authenticate('local')(req, res, function()
                    res.redirect('/home')
                )
                res.redirect('login')
            
            
        );
    
)

【问题讨论】:

【参考方案1】:

你弄错了sintex。 试试这个:

passport.authenticate('local'), function (req, res)
  res.redirect('/home')
)

【讨论】:

以上是关于我尝试使用 passport.js 对用户进行身份验证,但它给了我一个错误**服务器响应状态为 400(错误请求)**的主要内容,如果未能解决你的问题,请参考以下文章

在不同情况下使用 Passport.js 更改和保存重定向

使用 Everyauth/Passport.js 向 Twitter 进行身份验证,同时询问用户名/电子邮件/密码

在带有 React.js 前端的 Node.js 上使用 Passport.js 进行身份验证

passport.js 做啥以及我们为啥需要它?

如何允许用户在 Node JS Passport JS 失败后尝试不同的电子邮件?

Node.js - JWT、API:如何实现多个 Passport.js 身份验证中间件?