Я использую экспресс-маршруты с помощью Next, в приведенном ниже примере /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
, используя строку URL браузера , за исключением , когда я использую <Link href="/a">
со своей страницы /b
. Тогда страница показывает скрытый контент, и мой доступ не был проверен ... почему? Как я могу решить эту проблему?
Эта проблема может быть воспроизведена с помощью этой ссылки Github , вам просто нужно добавить пример isAuth
, как я это делал в примере выше.