现在,我正在使用Express创建Nuxt.js应用程序,并创建由Express创建的后端服务器。 这次,我将使用“ express-session”和“ passport-twitter”在Express应用程序中创建Twitter登录功能。 BFF使用了My Express后端服务器,它从另一台核心服务器获取用户帐户数据。 因此,我的任务是将Twitter身份验证令牌和秘密令牌发送到另一台核心服务器,以便它响应连接到Twitter帐户的用户数据。然后,我将该用户数据保存在快速会话中。
这是我的编码上下文。 我很麻烦,如何在每个源文件中共享会话对象?
以下是我的护照客户代码。
const passport = require('passport')
const TwitterStrategy = require('passport-twitter').Strategy
const axios = require('axios')
const env = require('./share').env
const session = require('./index').session
passport.use(
new TwitterStrategy(
{
consumerKey: env.twitterConsumerKey,
consumerSecret: env.twitterConsumerSecret,
callbackURL: env.twitterCallbackUrl
},
async function(token, tokenSecret, profile, done) {
passport.session.id = profile.id
profile.twitterToken = token
profile.twitterTokenSecret = tokenSecret
const options = {
headers: {
'Content-Type': 'application/json'
}
}
const requestData = {
accessToken: token,
secret: tokenSecret,
}
const response = await axios
.post(env.apiBaseUrl, requestData, options)
.then(res => {
return res.data
})
.catch((error) => {
throw new Error('Bad credentials')
})
session.authUser = response
return done(null, profile)
}
)
)
module.exports = { passport: passport }
以下是主服务器代码的一部分。
const session = require('express-session')
...many middleware and config code...
module.exports = {
session: session
}
我的问题是在另一个文件中共享会话对象的最佳实践是什么?我现在的代码是会话对象已导出,而客户端代码则需要它。 但是我认为这不是好的代码。
请如何共享会话对象或如何编码分段和集成?