При использовании пакета csurf мы сталкиваемся с ошибками CSRF.Что странно, это влияет только на несколько пользователей из 100-х.Эти затронутые пользователи всегда являются одними и теми же пользователями.Я не верю, что это является проблемой при передаче токена csrf в браузер, так как 99% запросов работают.Мне интересно, если что-то не так с моей конфигурацией, из-за которой эти токены по ошибке истекают.Или это просто что-то не так с машиной пользователя, где он истекает.У пользователей, испытывающих это, есть действительные имена входа и сеансы.
В своем журнале я вижу следующее:
ForbiddenError: неверный токен csrf на csrf (/ cme / apps / install /express_server / node_modules / csurf / index.js: 112: 19) в Layer.handle [как handle_request] (/cme/apps/install/express_server/node_modules/express/lib/router/layer.js:95:5) в trim_prefix(/cme/apps/install/express_server/node_modules/express/lib/router/index.js:317:13) в /cme/apps/install/express_server/node_modules/express/lib/router/index.js:284:7 в Function.process_params (/cme/apps/install/express_server/node_modules/express/lib/router/index.js:335:12) в следующем (/ cme / apps / install / express_server / node_modules / express / lib / router/index.js:275:10) в cookieParser (/cme/apps/install/express_server/node_modules/cookie-parser/index.js:71:5) в Layer.handle [как handle_request] (/ cme / apps / install/express_server/node_modules/express/lib/router/layer.js:95:5) в trim_prefix (/ cme / apps / install / express_server)/node_modules/express/lib/router/index.js:317:13) в /cme/apps/install/express_server/node_modules/express/lib/router/index.js:284:7 в Function.process_params (/ cme /apps / install / express_server / node_modules / express / lib / router / index.js: 335: 12) в следующем (/cme/apps/install/express_server/node_modules/express/lib/router/index.js:275:10)в methodOverride (/cme/apps/install/express_server/node_modules/method-override/index.js:79:5) в Layer.handle [как handle_request] (/ cme / apps / install / express_server / node_modules / express / lib /router / layer.js: 95: 5) в trim_prefix (/cme/apps/install/express_server/node_modules/express/lib/router/index.js:317:13) в / cme / apps / install / express_server / node_modules /express / lib / router / index.js: 284: 7 в Function.process_params (/cme/apps/install/express_server/node_modules/express/lib/router/index.js:335:12) в следующем (/ cme / apps/install/express_server/node_modules/express/lib/router/index.js:275:10) по внутреннему адресу (/ cme / apps / install / express_server / node_modules / hat / i)ndex.js: 47: 33) в xXssProtection (/cme/apps/install/express_server/node_modules/x-xss-protection/index.js:26:7) в internalNext (/ cme / apps / install / express_server / node_modules /шлем / index.js: 51: 7) в nosniff (/cme/apps/install/express_server/node_modules/dont-sniff-mimetype/index.js:4:5)
Вот мойтекущая настройка:
var app = express();
// express configurations
app.enable("strict routing");
app.set("views", __dirname + "/views");
app.set('view engine', 'pug');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(helmet());
app.use(methodOverride());
app.use(cookieParser("secretsecretsecretsessioncode"));
app.set('trust proxy', true);
app.use(csrf({
cookie: true
}));
app.use(session({
secret: 'secretsecretsecretsessioncode',
cookie: {
maxAge: 12 * 60 * 60 * 1000, // 12 hours
secure: true
},
proxy: true,
saveUninitialized: true,
resave: false,
store: new mongoStore({
mongooseConnection: mongo.db,
autoReconnect: true,
stringify: false
})
}));
app.use(adldap_model.passport.initialize());
app.use(adldap_model.passport.session());
app.use(function (req, res, next) {
res.locals.csrftoken = req.csrfToken();
next();
});