hi,
Der User erzeugt ein Abfrageergebnis aus einer Datenbank. Es entstehen Datensätze daraus, die in der Sessiondatei gespeichert werden. Darunter sind auch Datensätze, die Verweise auf Files im Dateibaum enthalten. Im View kann ich nun dafür sorgen, dass diese als Link oder neues Requestobjekt (z. B. ein <img>-Tag) ausgegeben werden.
Wenn dieser nun vom Browser aufgelöst wird, soll der Reqest auf das Verzeichnis '/private/images/PATH_TO_THE_RESOURCE.XXX' immer in ein und derselben Datei landen, die dann mittels Request-Path-Zerlegung den öffentlichen Namen der Resource feststellt und dann in der Session guckt, ob dafür eine Translation auf das lokale Verzeichnis (außerhalb der DocRoot!) vorliegt. Dann darf das Skript diese Ressource ausliefern. So erhält ein User immer nur diejenigen Files, auf die er Rechte hat. Die Rechtesteuerung findet im Datenbankmodell statt und ich darf die auch nicht anfassen.
Ich hoffe, ich konnte mein Anliegen nochmal verständlicher rüberbringen.
Es ist sehr umständlich und auch an einer Stelle unlogisch: Wenn das Berechtigungssystem in der DB abgebildet ist, warum müssen dann nach einer Abfrage die Berechtigungen erneut geprüft werden wenn es um Ausliefern von Content geht?
Du kannst das viel einfacher lösen mit einer Routing-Table und einer Klassenbindung an die entsprechenden Ressource:
URL => Class
Die Berechtigung jedoch, wird weder in der URL kodiert noch in der Class, vielmehr wird je nach Benutzergruppe ganz einfach eine andere Routing-Table in den Hauptspeicher geladen. So hast du das Berechtigungssystem komplett vom Code getrennt und welche Class zu welchem URL gehört ist nur noch eine Frage der Konfiguration (außerhalb vom Code).
Ich probiere jetzt noch ein bisschen mit Mod Rewrite herum, befürchte aber, dass ich das noch nicht alleine hinbekomme.
Ja freilich, Rewrite brauchst Du fürs Routing.
MfG