gpt4 book ai didi

passport.js - 为什么passport.authenticate 被调用两次?

转载 作者:行者123 更新时间:2023-12-01 05:09:08 25 4
gpt4 key购买 nike

我正在学习passportjs。我正在查看这里的 Passport 谷歌示例
https://github.com/jaredhanson/passport-google/blob/master/examples/signon/app.js

它包含以下代码行

app.get('/auth/google',
passport.authenticate('google', { failureRedirect: '/login' }),
function(req, res) {
res.redirect('/');
});

随后,这些行:
app.get('/auth/google/return',
passport.authenticate('google', { failureRedirect: '/login' }),
function(req, res) {
res.redirect('/');
});

有人能帮我理解为什么需要重复调​​用passport.authenticate吗?

最佳答案

这两个调用实际上服务于不同的功能,具体取决于接收到的请求类型以及流所处的身份验证阶段。

第一个电话passport.authenticate是启动 OpenID 身份验证(这是 passport-google 在幕后使用的),第二个调用(针对 return URL)由 OpenID 提供程序用于响应先前的身份验证请求。 Passport 策略从第二个请求中读取相关断言并相应地处理它——最终导致重定向到 /login。如果断言失败或重定向到 /如果断言成功。

源代码在 https://github.com/jaredhanson/passport-openid/blob/master/lib/passport-openid/strategy.js#L164包含一些写得很好的评论,解释了正在发生的事情。

最后,其他 Passport 策略的行为可能有所不同,因此并非每个带有回调的策略都需要对 passport.authenticate(...) 进行看似“重复”的相同调用。 .

关于passport.js - 为什么passport.authenticate 被调用两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26268271/

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