Ich verwende csurf in meinem express Projekt. Ich habe 3 Dateien:"ForbiddenError: ungültiges csrf-Token" erhalten Beim Teilen von Routen in verschiedene Dateien/Module
- app.js - Haupteintrittspunkt
- Routen/index.js - Index Routen
- Routen/users.js - Benutzer Routen
Es ist Standard Boilerplate bei der Verwendung express application generator.
Ich habe eine Route in index.js:
router.get('/', csrfProtection, function(req, res, next) {
res.render('index', {
csrfToken: req.csrfToken()
});
});
Die Seite für diese Strecke ein Formular enthält, die ein verstecktes Feld mit csrf Token hat:
input(name='_csrf', type='hidden', value='#{csrfToken}')
alles funktioniert gut und Ich kann das csrf-Token in der Quelle sehen.
Wenn das Formular abgeschickt wird es behandelt kaufen die Strecke in Routen/users.js:
router.post('/login', csrfProtection, function(req, resp) {
if(!validator.isAlphanumeric(req.username))
console.log('Not alphanumeric');
...
});
Es scheint, das Problem etwas mit den beiden Dateien, die zum Erstellen neuer Instanzen von csrf
zu tun, und csrfToken
. An der Spitze der beiden Routen Dateien, die ich benötigen sie etwa so:
var csrf = require('csurf');
var csrfProtection = csrf({ cookie: true });
Wenn ich die Login-Route in Routen setzen/index.js es funktioniert gut, was mich vielleicht gemacht hat, denke beide Instanzen verwenden unterschiedliche csrf Token.
Irgendwelche Ideen?