【发布时间】:2020-02-01 20:53:36
【问题描述】:
我在 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}`)
})
})
非常简单直接,现在我使用浏览器的网址栏except正确拒绝了/a 上的访问,当我使用/b 中的<Link href="/a"> 时页。然后页面显示隐藏内容,我的访问没有被检查...为什么?我该如何解决这个问题?
可以使用 Github link 复制此问题,您只需添加 isAuth 示例,就像我在上面的示例中所做的那样。
【问题讨论】:
标签: javascript express next.js