在 Passport JS 策略中访问 req 和 res
Access req and res inside Passport JS strategy
我正在开发一个应用程序,我希望我的用户能够使用他们的 Spotify 帐户进行连接。我已经设法使用 Passport JS Spotify 策略做到了这一点。现在的问题是,我还想提供一个功能,让用户能够通过电子邮件注册和登录。登录后,他们应该能够 link 他们的 Spotify 帐户到全新的基于电子邮件的帐户。
我有这段代码可以使用 Spotify 策略。
passport.use(
new SpotifyStrategy(
{
clientID: process.env.SPOTIFY_CLIENTID,
clientSecret: process.env.SPOTIFY_SECRET,
callbackURL: '/auth/spotify/callback',
scope: ['user-read-email']
},
async function (_accessToken, _refreshToken, _expires_in, profile, cb) {
return await passportSocialLogin(profile, cb)
}
)
)
这里我有那个函数调用(passportSocialLogin)。在这里,我将来自 Spotify 的数据添加到我的数据库中。如果能够将 req 作为 passportSocialLogin 的参数传递,那就太好了。这将帮助我通过会话对象找到已登录的用户,然后 link 他在 Spotify 上的帐户。
你对此有什么想法吗?谢谢!祝你有美好的一天!
我在这里找到了解决方案:https://www.passportjs.org/concepts/delegated-authorization/
如您所见,您可以在策略中使用 passReqToCallback
,并且 req
对象将用作验证回调的第一个参数。
就我而言,解决方案是:
passport.use(
new SpotifyStrategy(
{
clientID: process.env.SPOTIFY_CLIENTID,
clientSecret: process.env.SPOTIFY_SECRET,
callbackURL: '/auth/spotify/callback',
scope: ['user-read-email'],
passReqToCallback: true
},
async function (req, _accessToken, _refreshToken, _expires_in, profile, cb) {
return await passportSocialLogin(profile, req, cb)
}
)
)
我正在开发一个应用程序,我希望我的用户能够使用他们的 Spotify 帐户进行连接。我已经设法使用 Passport JS Spotify 策略做到了这一点。现在的问题是,我还想提供一个功能,让用户能够通过电子邮件注册和登录。登录后,他们应该能够 link 他们的 Spotify 帐户到全新的基于电子邮件的帐户。
我有这段代码可以使用 Spotify 策略。
passport.use(
new SpotifyStrategy(
{
clientID: process.env.SPOTIFY_CLIENTID,
clientSecret: process.env.SPOTIFY_SECRET,
callbackURL: '/auth/spotify/callback',
scope: ['user-read-email']
},
async function (_accessToken, _refreshToken, _expires_in, profile, cb) {
return await passportSocialLogin(profile, cb)
}
)
)
这里我有那个函数调用(passportSocialLogin)。在这里,我将来自 Spotify 的数据添加到我的数据库中。如果能够将 req 作为 passportSocialLogin 的参数传递,那就太好了。这将帮助我通过会话对象找到已登录的用户,然后 link 他在 Spotify 上的帐户。
你对此有什么想法吗?谢谢!祝你有美好的一天!
我在这里找到了解决方案:https://www.passportjs.org/concepts/delegated-authorization/
如您所见,您可以在策略中使用 passReqToCallback
,并且 req
对象将用作验证回调的第一个参数。
就我而言,解决方案是:
passport.use(
new SpotifyStrategy(
{
clientID: process.env.SPOTIFY_CLIENTID,
clientSecret: process.env.SPOTIFY_SECRET,
callbackURL: '/auth/spotify/callback',
scope: ['user-read-email'],
passReqToCallback: true
},
async function (req, _accessToken, _refreshToken, _expires_in, profile, cb) {
return await passportSocialLogin(profile, req, cb)
}
)
)