Haben Sie erfolgreich die CSRF-Middleware in Express arbeiten, wie in früheren SO-Fragen. Es erzeugt die Token gut, aber es verweigert ALLE Formulareinreichungen. Der einzige mögliche Konflikt, den ich sehen kann, ist, dass ich redis als Session-Speicher mit connect-redis und dem Einstecken von socket.io in die Session benutze, aber ich habe die Socket-Bits auskommentiert und es spielt immer noch nicht gut.CSRF Middleware, die Probleme verursacht Node.JS + Express
Das ist die Reihenfolge, die ich meine Middleware anrufe, ist möglicherweise etwas verrückt hier?
(Coffee)
app.configure ->
app.set 'views', __dirname + '/views'
app.set 'view engine', 'jade'
app.use express.bodyParser()
app.use express.methodOverride()
app.use express.cookieParser()
app.use express.session
secret: "itsasecret"
store: sessionStore
app.use express.csrf()
app.dynamicHelpers
token: (req, res) ->
req.session._csrf
app.use app.router
app.use express.static(__dirname + '/public')
Dies ist der Weg, der zu den gebuchten Daten reagiert.
(Dies ist nicht der Code-Entwicklung, mich nur zu lernen Knoten bin ich auch bewusst ist dies ein Monstrum sein würde, wenn ich es online gestellt)
app.post '/admin/logintry', (req, res) ->
if req.body.username is 'Tim' and req.body.password is 'TempPassword'
req.session.adminIn = true
res.redirect '/admin/home'
else
res.redirect '/admin/login?failed=true'
Hier ist der HTML-Code, den Browser auf der Formularseite erreicht :
<input type="hidden" token="5ODFxml1QAhQvOmq1QE6Qd7n">
Und die Antwort empfangen von "/ admin/logintry":
Forbidden
N ew zu Node, Express und SO, erst vor kurzem richtig erlerntes Javascript, unsicher, wo man überhaupt nach Problemen sucht. Irgendwelche Hilfe, sogar gerade auf wo man anfängt zu graben, sehr geschätzt.
Prost.
Alles funktioniert jetzt. Nannte den Namen, wenn er auf der vorhergehenden Frage reparierte. Danke für die schnelle Antwort! –