fix: CSRF 403 — читать токен из body (_csrf), cookieName без __Host- (v0.4.0)

This commit is contained in:
2026-05-30 16:49:35 +03:00
parent 0845440f86
commit 093b96b9ae
2 changed files with 11 additions and 1 deletions
+10
View File
@@ -42,6 +42,16 @@ function initCsrf() {
// Если сессии нет — пустая строка (допустимо для /login до установки сессии).
getSessionIdentifier: (req) => req.sessionID || '',
// ⚠️ csrf-csrf v4 по умолчанию читает токен из заголовка x-csrf-token.
// Наши формы (EJS) отправляют его в теле POST как поле _csrf.
// Без этой строки токен не находится → 403 на каждый POST.
getCsrfTokenFromRequest: (req) => req.body && req.body._csrf,
// Имя cookie без префикса __Host- (дефолт __Host-psifi.x-csrf-token
// требует Secure-флаг; при NODE_ENV≠production secure:false → cookie
// отклоняется браузером по HTTPS и валидация падает).
cookieName: 'csrf-token',
cookieOptions: {
// secure: true → cookie передаётся только по HTTPS. Важно в продакшене.
secure: process.env.NODE_ENV === 'production',