Я столкнулся с этим, установив некоторое промежуточное программное обеспечение только для определенных маршрутов. В моем приложении мне нужна только сессия и csrf на моей странице контактов.требуется метод, вызываемый функцией не работает
В этом проблема. Когда я требую их снаружи и использую ссылки в массиве в качестве параметра маршрута, он отлично работает. Сессия работает отлично и ожидает того же файла cookie (sessionID) для каждого запроса и проверки CSRF, как и должно.
Но, когда я использую функцию для возврата массива «промежуточного программного обеспечения», он ведет себя ненормально. Когда я «получаю» контакт, я получаю один sessionID, и когда я его «отправляю», очевидно, что сеанс перезапускается, и я получаю сообщение об ошибке, так как у меня есть старший идентификатор сессии. И странно, что CSRF также ожидает другой токен csrf, а не тот, который он отправил мне.
Я понимаю, что это связано с тем, что мне требуется в модулях, но я хотел бы получить четкое объяснение, почему это происходит. Заметьте, что я новичок, так что легко на меня :) Спасибо!
// MIDDLEWARE FOR CERTAIN ROUTES
// This works fine!
var session = require('express-session')({secret: 'i lit fire to the rain', saveUninitialized: false, resave: true});
var csrf = require('csurf')();
router.get('/contact', [session, csrf], function(req, res, next) {
});
router.post('/contact', [session, csrf], function(req, res, next) {
});
// but this does not work
var contactMiddleware = function() {
var session = require('express-session')({secret: 'i lit fire to the rain', saveUninitialized: false, resave: true});
var csrf = require('csurf')();
return [session, csrf];
};
router.get('/contact', contactMiddleware(), function(req, res, next) {
});
router.post('/contact', contactMiddleware(), function(req, res, next) {
});
Что это нужно делать с PHP? –
А, это была ошибка :) – donnyjeremiah