Ошибка: неправильно настроен csrf — Express JS 4

Я пытаюсь включить модуль csrf Express 4 в существующем приложении.

Я добавил следующий код:

var csrf = require('csurf')
...

app.use(csrf());

Я запустил приложение и получаю:

Error: misconfigured csrf

и трассировка стека. Ничего больше.

Я проверил документацию, но это неясно. Кто-нибудь может помочь? Какая минимальная конфигурация требуется для использования этого модуля?


person Jérôme Verstrynge    schedule 02.06.2014    source источник
comment
Похоже, вам нужно либо указать файл cookie, либо использовать экспресс-сессии.   -  person Explosion Pills    schedule 02.06.2014
comment
Я сделал, я поставил app.use(csrf()) после app.use(cookieParser())...   -  person Jérôme Verstrynge    schedule 02.06.2014


Ответы (3)


Я нашел решение. Вызов app.use(csrf()) должен быть установлен после app.use(cookieParser()) И app.use(session({...}).

person Jérôme Verstrynge    schedule 02.06.2014
comment
У меня это уже было, но мне пришлось поместить его в конец основного файла app.js, прямо перед module.exports = app. Работал нормально, пока я не добавил Redis в качестве сеанса. - person Kevin Suttle; 28.05.2015

Если вы используете Redis в качестве хранилища сеансов, а сервер не запущен, вы также получите ошибку неправильной настройки.

https://github.com/expressjs/csurf/issues/73

person Mike    schedule 18.06.2015
comment
Я использовал MongoStore в качестве хранилища сеансов и тоже получил эту ошибку. Большое спасибо, вы сэкономили мое время. - person 18augst; 01.09.2015

app.use(
  sessions({
  cookieName: 'demo-session',
  secret: 'this is a secret msg',
  duration: 30 * 60 * 1000,
 })
);

app.use(csurf({ sessionKey: 'demo-session' }));

Я получил ту же ошибку, когда sessionKey не был одинаковым в промежуточном программном обеспечении сеанса и csurf. csurf использует session в качестве sessionKey по умолчанию, если он не указан. Здесь sessionKey — это demo-session, который должен быть таким же в промежуточном программном обеспечении сеанса.

person sharad shetty    schedule 05.06.2021