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.
相同
- 有没有办法在我进行 get_data api 调用时传递当前的身份验证上下文?
- 在 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
}
});
堆栈:下一个。js/express.js/typescript/nodemon
我对 azure devops api 有依赖性,它似乎在幕后使用 'fs'。所以我不能在任何页面中使用这个库(包括在 getInitialProps 中)。 我在为我提供数据的快速服务器中创建了一个自定义路由(称之为 "get_data")。我在将呈现数据的页面的 getInitialProps 中调用此路由(称之为 data.tsx)。
整个应用程序在 Azure Web 应用程序中支持双因素身份验证。当在 getInitialProps 中进行 get_data 调用时,我收到 401。请注意,服务页面的来源与 get_data api.
相同- 有没有办法在我进行 get_data api 调用时传递当前的身份验证上下文?
- 在 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
}
});