Ist es ein schlechter Entwurf, Code zu mischen, der sich mit Sicherheitslogik im Modell beschäftigt?Mischen von Sicherheitslogik mit Modellen in Ruby on Rails?
Beispiel eine Seite in dem BEFORE_SAVE Rückruf zum Bearbeiten
- Der aktuelle Benutzer aus der
current_user
Methode in der Controller-Schicht gepackt ist. - Exception werfen, wenn
current_user.has_permission? :edit_page
falsch ist - Die
editor_id
-current_user.id
- Die Änderung in einer separaten Tabelle angemeldet ist gesetzt
Das Modell ist nicht die einzige Sicherheitskontrolle in der Anwendung. Die Benutzerschnittstelle prüft vor Ansichtsbearbeitungsansichten auf Berechtigung. Das Modell wirkt als Barriere gegen alle Fehler auf der View/Controller-Ebene.
Hinweis: Der einzige Verstoß zwischen den Modell- und Controller-Ebenen ist die current_user
Methode. Die Anwendung, an der ich arbeite, wird niemals anonyme Benutzer zulassen.