Angenommen, ich habe zwei Entitäten wie folgt:Stellen Sie sicher, authentifizierte Benutzer können nur ihre eigenen Datensatz aktualisieren
@Entity
public class ClassA {
private Long id;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@OneToMany
private Set<ClassB> classBs = new HashSet<>();
}
@Entity
public class ClassB {
private Long id;
private String name;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Das heißt, KlasseA enthält eine Reihe von ClassB. Und eine Ressource wie so KlasseA zu aktualisieren:
@RequestMapping(method = RequestMethod.PUT)
public ClassA update(@RequestBody ClassA a){
// Update code here
}
und dann in einem DAO (mit Hibernate) die folgenden genannt wird KlasseA in der Datenbank zu aktualisieren:
@Override
public ClassA save(ClassA classA) {
sessionFactory.getCurrentSession().saveOrUpdate(classA);
return classA;
}
In einem Update Szenario, wenn Ein authentifizierter Benutzer ändert die id
einer Instanz von ClassB
in eine id
, die einem anderen Benutzer gehört. Wir stellen fest, dass es keine Schutzmechanismen gibt, die verhindern, dass der Benutzer Objekte aktualisiert, die nicht zu ihnen gehören. Gibt es Methoden, dies zu verhindern? Was ist die beste Vorgehensweise, um dies zu verhindern (d. H. Verhindert, dass sie einen anderen Benutzer aktualisieren classB
Details)?
Danke für die Antwort, ich schätze, was Sie sagen. In diesem Fall haben wir eine Service-Schicht zwischen dem Controller und dem DAO, und daher wäre es logisch, diese Logik zu verwenden. Ich nehme an, dass die Frage ist mehr Fragen, ist es möglich, automatisch überwintern (oder möglicherweise Frühjahr/Frühjahr-Sicherheit) tun diese Arbeit für Sie? Oder wenn Methoden dafür irgendwo bekannt und dokumentiert sind. –