gpt4 book ai didi

javascript - 使用 NextJS Link 时 ExpressJS 中间件不工作

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:23:22 28 4
gpt4 key购买 nike

在下面的例子中,我使用 Next 的 Express 路由 /a授权人员应该可以访问,而/b是公开的。

... other imports...
const app = next({ isDev })
const handle = app.getRequestHandler()

async function isAuth(req, res, next) {
const token = req.header('x-Auth-Token');
if (!token) return res.status(401).send('Access denied. No token provided.');

req.user = 'Connected!';
next();
}

app.prepare().then(() => {
const server = express()

server.get('/a', isAuth, async (req, res) => {
return app.render(req, res, '/a', req.query)
})

server.get('/b', async (req, res) => {
return app.render(req, res, '/b', req.query)
})

server.all('*', (req, res) => {
return handle(req, res)
})

server.listen(port, err => {
if (err) throw err
console.log(`> Ready on http://localhost:${port}`)
})
})

非常简单明了,现在我正确地拒绝了对 /a 的访问当我使用 <Link href="/a"> 时,使用浏览器的地址栏 except来 self 的 /b页。然后页面显示隐藏内容,我的访问没有被检查...为什么?我该如何解决这个问题?

可以使用此 Github link 复制此问题,您只需要添加 isAuth就像我在上面的例子中所做的那样。

最佳答案

这是 Next.JS Link 工作方式的一部分。它已经预取了即将到来的站点的源代码,而没有获取真实端点,因此您需要针对当前情况实现前端和后端检查。

如需更多信息,请随时关注 Next.JS Github 问题中的讨论:Github NextJs Restricted Links .它清楚地解释了如何处理这种情况。

关于javascript - 使用 NextJS Link 时 ExpressJS 中间件不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58220786/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com