Для начала я наивно скопировал промежуточное программное обеспечение, которое выражает использование сервера, в Next в качестве пользовательского сервера, оно несколько работает, за исключением того, что промежуточное программное обеспечение вызывается для каждого входящего запроса, включая запросы для / static и / _next и HMR.
В частности, паспорт и промежуточное программное обеспечение CSRF вызываются неоднократно.Я понял, что могу сделать это, скопировав и изменив с
https://github.com/zeit/next.js/issues/6290#issuecomment-469820079
const TOP_PATHS = new Set(
fs.readdirSync(path.join(__dirname, '..', 'pages'))
.map((f) => f.replace(/\.(jsx?|tsx?)$/, '')),
);
// Use csrf only with pages, exclude requets for assets
module.exports = (req, res, goNext) => {
const topPath = req.path.split('/', 2)[1];
if (TOP_PATHS.has(topPath)) {
const token = req.csrfToken();
res.locals.csrfToken = token;
}
goNext();
};
Но действительно ли это единственный путь?Это не кажется мне масштабируемым, к тому же я пока не совсем понимаю, что будет дальше.Безопасно ли исключить / _next в производстве?