gpt4 book ai didi

javascript - Passportjs 回调,理解参数

转载 作者:行者123 更新时间:2023-12-03 06:02:07 45 4
gpt4 key购买 nike

我无法理解 Passport.js 的自定义回调发生了什么。我不明白(req, res, next)在最后。我们应该从关闭中得到这些值吗?

app.get('/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); //<=== What is the purpose of this?
});

最佳答案

passport.authenticate()middleware 。简而言之,中间件是一个修改请求然后将其传递到下一个请求处理程序的函数。 Express 中的请求处理程序是以 (req, res, next) 作为参数的函数。那么,passport.authenticate 是一个返回中间件的函数,该中间件将 (req, res, next) 作为参数。

一般会这样使用:

app.get('/login', passport.authenticate());

其中 passport.authenticate() 将修改请求,确保用户已通过身份验证,然后将其传递给下一个处理程序。

在这种情况下,我们希望 passport.authenticate 做更多的事情,所以我们替换:

app.get('/login', passport.authenticate());

等效的:

app.get('/login', function (req, res, next) {
passport.authenticate()(req, res, next)
});

然后将更多逻辑添加到 passport.authenticate 构造函数中。

关于javascript - Passportjs 回调,理解参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39711822/

45 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com