Schützt bestimmte Felder bei der Bindung im Frühjahr

8

Ich arbeite an einer Seite, auf der Benutzer Profilinformationen bearbeiten können. Ich möchte, dass sie ihre öffentlichen Informationen bearbeiten können, ihnen aber nicht erlauben, Systemflags wie ihren Benutzertyp zu ändern.

Dies wird mit Spring MVC (3.0) implementiert. Das Benutzerobjekt hat typische Felder wie firstName , lastName , email (alle sollten editierbar sein) und eine boolesche administrator (die nicht editierbar sein sollte.

Meine Methode sieht ungefähr so ​​aus:

%Vor%

Mein Formular enthält die Felder firstName , lastName etc und schien gut zu funktionieren.

Das Problem besteht darin, dass ein böswilliger Benutzer, der eine Abfrage mit dem Parameter administrator als "true" sendet, dieses Feld festlegen kann, wenn dies nicht der Fall ist.

Ich weiß, dass ich ein separates "Formular" -Objekt nur mit den Feldern erstellen kann, die ich ändern möchte, und das für das automatische Binden verwenden. (die Kopie über die Daten). Das Problem ist, dass ich viele Orte habe, die diese Technik benutzen. (für den Benutzer und andere Objekte). Es wäre mühsam zu warten, wenn ich Felder hinzufügen möchte.

Gibt es eine Möglichkeit, Anmerkungen oder andere Techniken in Spring MVC zu verwenden, um Parameter aufzulisten und Änderungen an beliebigen Domänenobjekteigenschaften zu verhindern?

    
Will Glass 16.02.2011, 22:13
quelle

3 Antworten

10

Der DataBinder verfügt über zwei Eigenschaften mit den Namen allowedFields und disallowedFields , die definieren, was die Bindung zuzulassen oder zu verbieten ist. Benutze das in deiner @InitBinder Methode:

%Vor%     
Costi Ciudatu 16.02.2011, 22:33
quelle
3

Sie können die Anfrage mit den Ausdrücken "! myParam" filtern, um anzugeben, dass der angegebene Parameter nicht in der Anfrage enthalten sein soll.

%Vor%     
Julian Bonilla 16.02.2011 22:35
quelle
-2

Senden Sie diesen Administrator -Parameter nicht an die Clientseite, sondern steuern Sie ihn auf der Serverseite.

    
Iogui 16.02.2011 22:33
quelle

Tags und Links