LeKuchen: Rechtesystem für Site

Hallo zusammen,
ich überlege gerade, wie ich ein Rechtesystem für eine neue Site angehen soll. Mir geht es v.a. um das DB-Konzept.

Folgende Ideen habe ich:
Jedes einzelne Element/Inhalt einer Seite der Site ist aus einer DB-Tabelle generiert (nenne ich jetzt einfach mal Objekt).

Für jedes Objekt sollen Rechte vergeben werden können, nämlich Lesen, Schreiben(neu), ändern und ggf ausführen.

Die einzelnen User sind in Gruppen zusammengefasst, die bestimmte voreingestellte Rechte haben. Es sollen aber weitere Gruppen hinzugefügt werden können. Diesen kann man dann Rechte an einzelnen Objekten zuteilen.

Der Ersteller-User (owner) eines Elementes kann seinen Eintrag auch immer editieren/löschen. (Für den Fall, dass er Schreibrechte aber keine Modify-Rechte hat.)

Lösungsversuch:
Ich habe eine DB-Tabelle, in der ich den Usergruppen für jedes einzelne Objekt die vier Rechte zuteile oder entziehe.

Bspl:
Tabelle Objekte
Felder: Objekt_ID, Objekt-/Tabellenname (z.B. "News")

Objekt/Tabelle "News"
Felder: News_ID, owner, etc.

Tabelle Gruppen
Felder: Gruppen_ID, etc.

Tabelle Rechte
Felder: Gruppen_ID, Objekt_ID, News_LeseRecht, News_SchreibRecht, News_ModifyRecht, etc.

Hoffe die Idee ist klar geworden....

Das kommt mir etwas kompliziert vor. Geht das nicht auch einfacher? Hat jemand einen Tipp oder einen Link? Habe zu solchen Konzepten nichts gefunden....

Gruss,
LeKuchen

  1. Gude,

    Machs doch einfach so:

    Tabelle Objekte
    Felder: Objekt_ID, Objektname, Objektinhalt, Ersteller

    Tabelle Gruppen
    Felder: Gruppen_ID, Gruppenname

    Tabelle Rechte
    Felder: Gruppen_ID, Objekt_ID, LeseRecht, SchreibRecht, ModifyRecht

    Ist viel einfacher!

    samy,

    1. Tach samy,

      Ist viel einfacher!

      Jo, perfekt. So sieht es besser aus....Danke!
      Gruss,
      LeKuchen

  2. hi,

    Das kommt mir etwas kompliziert vor. Geht das nicht auch einfacher? Hat jemand einen Tipp oder einen Link? Habe zu solchen Konzepten nichts gefunden....

    Hmm, schau Dir mal das Potocol ICAP (Internet Content Adaption Protocol) an. Vielleicht kannst Du damit deine Ideen verwirklichen.

    Prinzip: Es kommt vom User ein Request auf eine Seite mit verschiedenen Objekten. Per ICAP wird nach den Berechtigungen zu diesen Objekten geschaut - je nach User der eingeloggt ist. Und ebenfalls via ICAP werden 'nicht berechtigte' Objekte auf der Seite ausgetauscht oder entfernt.

    Anders Beispiel aus meiner Praxis: Virenscan auf einem Proxyserver, per ICAP werden virulente Elemente auf der requesteten Seite ermittelt und entfernt.

    Kurzundgut: Mit ICAP können Inhalte von angeforderten Webseiten verändert, angepasst werden.

    Viele Grüße
    Rolf

    --
    KnowHow veröffentlichen statt patentieren!
    1. Hallo Rolf,

      Hmm, schau Dir mal das Potocol ICAP (Internet Content Adaption Protocol) an. Vielleicht kannst Du damit deine Ideen verwirklichen.

      Ja, danke, werde ich mir anschauen. Wobei ich das Login selbst eigentlich mit DB-verwalteten Sessions umsetzen wollte...

      Gruss,
      LeKuchen

  3. Hi,

    um die Antwort mal ganz generisch zu gestalten:

    • definiere Objekte (und Objekttypen)
           -> (Überschrift, Seite, Bereich etc...)
    • definiere Aktionen
           -> (lesen, ändern, löschen)
    • verbinde Objekte und Aktionen
           -> (Seite anzeigen)
    • fasse diese Dinge in Rollen bzw. Richtlinien zusammen
    • erstelle Benutzer
    • verbinde Benutzer und Rollen

    Wenn jetzt irgendein Zugriff (Aktion) auf ein Objekt erfolgen soll, fragst du den Benutzer:

    • ist er in einer Rolle, in welcher dieses Objekt und die Aktion ebenfalls enthalten ist ...

    fertig ... muss nur noch zusammen-ge-codet werden :-)

    Ciao, Frank

    1. Hallo Frank,

      fertig ... muss nur noch zusammen-ge-codet werden :-)

      Ja, so ähnlich hab ich es vor...bin dabei...;o)
      Gruss
      LeKuchen

      1. Hi,

        wie du (irgendwo hier) schriebtest:  dich interessiert mehr die
        Datenhaltung, das grundlegende Konzept hinter der Sache - so geht
        es mir auch, ich muss/will eine sache komplett verstanden haben,
        bevor ich sie benutze :-)

        in meiner Antwort sind ja auch quasi schon die Definitionen der
        Entitäten (Tabellen) versteckt

        es hängt ganz von dir ab, wie komplex du jetzt dein System
        gestalten willst:

        • ob du nur Objekt-Typen (News) oder auch Objekt-Instanzen
            (News Nr. 123) verwalten willst
        • oder was bei dir Aktionen sind (lesen und schreiben oder
            lesen und editieren, löschen, neu erzeugen)
        • ob du die Benutzer nur über deren Rollen verwalten willst
            oder den Benutzern zu ihren Rollen zusätzliche (überschreibend
            oder nicht überschreibend) Rechte hinzufügst und verweigerst

        Um das zu coden muss man nicht der Meister schlechthin sein ...
        das geht auch auf dem Fortgeschrittenen-Level.

        Na, viel Spass denn :-)

        Frank

  4. Hallo,

    ich überlege gerade, wie ich ein Rechtesystem für eine neue Site angehen soll. Mir geht es v.a. um das DB-Konzept.

    das erinnert mich doch sehr stark an ein x-beliebiges Foren-Script, was du da so beschreibst.
    Vielleicht schaust du dir mal eins an. Ich kenne persönlich nur das Burning Board von Woltlab. Das Burning Board 1 ist Freeware und in 2 Minuten installiert. Dann kannst du dir die DB-Struktur ja mal angucken.

    Hier der Link: http://www.woltlab.de/products/burning_board_1/index.php

    Gruß Gunther

    1. Hallo,

      das erinnert mich doch sehr stark an ein x-beliebiges Foren-Script, was du da so beschreibst.

      Ja - irgendwie haben ja alle Arten von Websites mit User-Interaktion oder Redaktionssystem Rechtesysteme nicht wahr? Foren, Gästebücher, CMS etc. Die bilden dafür ja sogar die Grundlage könnte man sagen.

      Und für meine Site wollte ich das Konzept halt vorher genau überlegen bevor ich drauf los programmiere, damit es ausbaufähig und einfach ist, aber alle wichtigen Funktionalitäten enthält.

      Hatte gedacht, da gibt es schon fertige Grundkonzepte, die man sich mal anschauen kann (wie gesagt, es interessiert mich mehr die Datenhaltung, das programmiertechnische umsetzen ist ja dann kein Problem)...
      Gruss,
      LeKuchen