【发布时间】:2021-08-17 09:11:59
【问题描述】:
我正在尝试将Passport.js 策略封装在适配器中,例如FacebookProviderAdapter、TwitchProviderAdapter 等等......为此,我需要“防止”自动重定向的护照的默认行为浏览器访问社交网络的 OAuth URL
只是为了提供更多上下文,我的抽象适配器是这样的:
interface SocialAuthProviderInterface {
generateRedirectUrl(): string;
}
我没有使用会话,我能够使用 Passport.Js 的回调“版本”,但即使它仍然重定向,我也无法拦截重定向 URL 字符串。
我意识到 Passport 也与 Express.js 库紧密耦合并将所有内容设置在其代码中,文档对这些方面非常肤浅,如何防止 URL 重定向并从任何策略中获取纯重定向 URL ?
我当前的测试设置如下:
/login/google 是生成 oauth URL 到 google 的起始端点,这是我想要阻止的重定向,我想要纯 URL 字符串。
app.get('/login/google', (request, response) => {
passport.authenticate('google', { scope: ['profile email'], session: false}, (err, user, info) => {
console.log(err, user, info)
})(request, response)
})
app.get('/google', (request, response) => {
passport.authenticate('google', { session: false }, (err, user, info) => {
console.log(err, user, info)
})(request);
})
【问题讨论】:
标签: node.js express passport.js