Nextjs + expressjs + Azure Web App:使用 express 进行双因素身份验证('fs' 不能在客户端使用)

Nextjs + expressjs + Azure Web App : two factor authentication with express ('fs' can't be used on client side)

堆栈:下一个。js/express.js/typescript/nodemon

我对 azure devops api 有依赖性,它似乎在幕后使用 'fs'。所以我不能在任何页面中使用这个库(包括在 getInitialProps 中)。 我在为我提供数据的快速服务器中创建了一个自定义路由(称之为 "get_data")。我在将呈现数据的页面的 getInitialProps 中调用此路由(称之为 data.tsx)。

整个应用程序在 Azure Web 应用程序中支持双因素身份验证。当在 getInitialProps 中进行 get_data 调用时,我收到 401。请注意,服务页面的来源与 get_data api.

相同
  1. 有没有办法在我进行 get_data api 调用时传递当前的身份验证上下文?
  2. 在 express api 中,方法目前看起来是这样的:
server.get('/get_data', (_req, res) => {
  let ado = new azure_devops() // this uses the azure-devop-api package 
  ado.get_data().then((data) => {
    res.setHeader('Content-Type', 'application/json');
    res.json(data) // return data as json 
  })
});

有没有办法像下面那样合并这两者(页面和数据服务)(这样我就不必使用身份验证设置进行额外的 api 调用)?

server.get('/data', (req, res) => { //note the change in route that serves the page data.tsx 
  const actualPage = '/data'; 
  let ado = new azure_devops() // this uses the azure-devop-api package 
  ado.get_data().then((data) => { 
    res.setHeader('Content-Type', 'application/json'); 
    res.write(data) // BUT this is where method returns instead i want to just add to the response body 
    app.render(req, res, actualPage); // THIS is not executed (so the page doesn't get rendered) 
  }) 
});

感谢任何指点。

this question得到了答案。

仍在从 getInitialProps 发出 API 请求。我错过了从上下文中添加 cookie。

const res = await fetch('http://' + context.req.headers.host + '/get_data', {
    headers: {
      cookie: context.req.headers.cookie, // WAS MISSING THIS
    }
  });