einfach zusammenfassen:
Wie ich Ihnen in 2 Fällen verstanden haben. Zuerst erstellen Sie eine eigene Ressource. Am besten wäre es, eine Standardressourcenfactory zu dekorieren, in die Sie einen UserContext einfügen, um einen aktuell angemeldeten Benutzer zu ermitteln. Oder geben Sie es als zweites Argument an die Factory-Methode weiter.
Zweitens ist eine Ressource zu aktualisieren. Sie möchten die Bearbeitung der Ressource nur einem Eigentümer erlauben? Eine Repository-Methode, die nicht nur die Ressourcen-ID, sondern auch einen aktuellen Benutzer erhält, übernimmt die Aufgabe. Dann hätten Sie eine Methode findByIdAndCustomer, so dass nur der Benutzer auf eine Bearbeitungsseite zugreifen könnte. Andernfalls würde ein Fehler angezeigt werden. Ich denke, es wäre 404.
Wenn dies ist, was Sie wollen, werden Sie am Ende mit zwei überschriebenen Ressourcen (benutzerdefinierte Fabrik und Repository) und Sie müssen Rest in Yaml beim Definieren eines Routing zu behandeln. Es sind keine Controller-Änderungen erforderlich.
Einige Vergleich beider Ansätze:
- es mit Hörer auflösen wahrscheinlich schneller wäre (nur eine Klasse erforderlich) und einfacher.
- Die Verwaltung durch Ereignis-Listener würde keine Routing-Änderungen erfordern.
- Das Überschreiben einer Factory stellt sicher, dass dieses Objekt immer mit dem angegebenen Benutzer erstellt wird. Das Ereignis wird nach der Erstellung ausgelöst, jedoch bevor es in der Datenbank gespeichert wird.
- Die benutzerdefinierte Repository-Methode stellt sicher, dass die Bearbeitungsseite nicht einmal von Nichteigentümern angezeigt werden kann.
Beide sind richtig. IMHO ist zuerst schneller, zweiter ist sauberer. Entscheiden Sie einfach, was Sie brauchen