Node.js authenticate()和req.login之间的PassportJS差异

Node.js authenticate()和req.login之间的PassportJS差异,node.js,express,authentication,session,passport.js,Node.js,Express,Authentication,Session,Passport.js,我目前正在学习node、express和passport的后端开发和身份验证 我使用的ressource使用以下代码: app.post("/login",(req,res") => { //Create user model here ... req.login(user, (err) => { ... } }) 然而,我发现这仅仅是写作 app.post("/login", passport.authenticate("local"

我目前正在学习node、express和passport的后端开发和身份验证

我使用的ressource使用以下代码:

app.post("/login",(req,res") => {
    //Create user model here
    ...
    req.login(user, (err) => {
       ...
    }
})
然而,我发现这仅仅是写作

app.post("/login", passport.authenticate("local", { failureRedirect: "/login" }), (req, res) => {
    res.redirect("/secret");
})

结果也是一样的。老实说,在我看来,登录等同于身份验证。PassportJS文档提到这两种方法都设置了req.user

所以我的问题是:有什么区别,什么时候你会使用哪个/如何使用


提前谢谢

我认为我们不应该寻找差异。因为你提到的两个部分是互补的。根据您自己的passport站点定义:

Passport在
req
上公开了一个
login()
函数(别名为
login()
),可用于建立登录会话

req.login(user, function(err) {
  if (err) { return next(err); }
  return res.redirect('/users/' + req.user.username);
});
登录操作完成后,用户将被分配到
req.user

注意:
passport.authenticate()
中间件自动调用
req.login()
。此函数主要在用户注册时使用,在此期间可以调用
req.login()
自动登录新注册的用户

最后,您可以阅读此链接