Как поделиться объектом сеанса в другом исходном файле в приложении Express? - PullRequest
0 голосов
/ 10 июня 2019

Теперь я создаю приложение Nuxt.js с помощью Express и создаю внутренний сервер, созданный Express.На этот раз я создаю функцию входа в Twitter в приложении Express, используя «express-session» и «passport-twitter».Бэкэнд-сервер My Express используется BFF, он получает данные учетной записи пользователя с другого главного сервера.Поэтому моя миссия - отправка токена авторизации в твиттере и секретного токена на другой главный сервер, чтобы он отвечал данным пользователя, подключенным к учетной записи твиттера.И я сохраняю эти пользовательские данные в экспресс-сессии.

Это мой контекст кодирования.У меня возникла проблема. Как открыть общий доступ к объекту сеанса в каждом исходном файле?

Ниже приведен код моего паспортного клиента.

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
}

Мой вопрос заключается в том, что лучше всего использовать сессионный объект в другом файле?Теперь мой код состоит в том, что объект сеанса экспортируется, и клиентский код требует этого.Но я думаю, что это не хороший код.

Пожалуйста, как поделиться сессионным объектом или как кодировать сегментацию и интеграцию?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...