Technische Basis für Rechte und Rollen
Wir kennen nun die Anforderungen und müssen uns für die technische Basis des Rechte und Rollensystems unserer Anwendung entscheiden. Prinzipiell gibt es zwei verschiedene Varianten:
- Authorisierung basierend auf Regeln z.B. cancancan.
- Authorisierung basierend auf Rollen (in der Datenbank gespeichert) z.B.: acl9.
Im 1. Fall müssen wir natürlich trotzdem Zuordnungen in der Datenbank speichern (z.B. wer ist Verantwortlicher einer Aufgabe) aber gespeichert wird direkt Domäneninformationen die dann in den Regeln genutzt wird.
Bei 2. wird direkt eine Rolle für ein einzelnes Objekt (z.B. user hat Rolle Verantwortlicher für Task#2323) gespeichert (in einer generischen Tabelle).
Nach Evaluation der Optionen setzen wir die Authorisierung mit der bereits genutzten Cancan Lösung um. Zum einen lässt sich damit theoretisch auch ein DB-basiertes Rollensystem implementieren aber vor Allem müssen/wollen wir die Domäneninformationen die wir benötigen sowieso speichern. Damit fällt dann die Notwendigkeit der DB-Rollen weg.