я сделал реализацию csrf в своем веб-приложении nodejs.
но токен csrf прикрепляется только в том случае, если я прохожу маршрут /login.
как я могу сделать, чтобы он реализовывался на каждом маршруте, не вызывая ошибок?
или другая идея для его правильной реализации?
я не думаю, что использование подстановочного знака ** поможет
это код для моего кода csrf:
app.use(
attachCsrfToken(
"/login",
"csrfToken",
(Math.random() * 100000000000000000).toString()
)
);
function attachCsrfToken(url, cookie, value) {
return function(req, res, next) {
// console.info(req.url, url);
if (req.url == url) {
res.cookie(cookie, value);
}
next();
};
}
Есть ли лучший способ его реализации?
@dimitristseggenes нет. я скопировал этот метод, и этот метод используется в функциях таким образом, который я действительно не понимаю, поэтому я не хочу ломать все приложение.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете создать промежуточное программное обеспечение, которое проверяет пользователя и URL-адрес, и добавить его к любому маршруту, который вы хотите проверить.
const express = require("express");
const router = express.Router();
function attachCsrfToken(req,res,next) {
// validate request
if (req.url == url) {
res.cookie(cookie, value);
next();
}
// if not valid throw error
res.JSON({success:false,code:403,message:'Unauthorized Access'})
};
router.use(
"/api/someroute",
attachCsrfToken,
require("./handlers/somePath").someFunction
);не понял, что ты здесь сделал и чем это отличается от того, что сделал я?
Привет @MendiSterenfeld, извините за поздний ответ, но в вашей функции вы всегда проверяете, req.url === url (который в вашем случае «/ логин», поэтому я сделал общее промежуточное программное обеспечение, и вы можете его передать по любому маршруту, который вы хотите. Надеюсь, теперь это ясно.
Вы используете модуль
csurf?