Wie fügen Sie die csrf-Validierung zur Pyramide hinzu?

8

Ich übergebe ein csrf_token für jede Post- und xhr-Anfrage und möchte das Token gegen das Session-csrf-Token validieren. Wenn sie nicht übereinstimmen, werfe ich eine 401.

Ich habe den NewResponse-Abonnenten in Pyramid verwendet, um die Anfrage zu prüfen und das csrf-Token in den Anfrageparametern gegen das Token in der Sitzung zu validieren. Die Validierung funktioniert, aber sie ruft immer noch die Ansicht auf, so dass def nicht so funktioniert, wie sie sollte.

Irgendwelche Vorschläge zur richtigen Vorgehensweise?

%Vor%     
Joseph Estrada 22.06.2011, 03:21
quelle

1 Antwort

9

Der NewResponse -Teilnehmer heißt , nachdem Ihre Ansicht aufgerufen wurde.

Sie möchten ein Ereignis verwenden, das früher aufgerufen wurde, z. B. NewRequest oder ContextFound . In Pyramid 1.0 müssen Sie ContextFound verwenden, um die Dinge richtig zu behandeln, da Sie in NewRequest events keine Exceptions auslösen können (dies ist in 1.1 behoben).

Dies kann mit einem ContextFound -Ereignis geschehen, indem eine Ausnahmesicht für HTTPException-Objekte wie folgt registriert wird:

%Vor%

Im Grunde wird dies die Ausnahme als das Antwortobjekt zurückgeben, wenn Sie es auslösen, was perfekt für HTTPException-Objekte gilt, die gültige Pyramid Response -Objekte sind.

Sie können dann Ihre Veranstaltung registrieren und sich mit der CSRF-Validierung befassen:

%Vor%     
Michael Merickel 22.06.2011, 15:59
quelle

Tags und Links