Ankündigung

Einklappen
Keine Ankündigung bisher.

Rechtesystem, Rollengebunden und Nutzergebunden?

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Rechtesystem, Rollengebunden und Nutzergebunden?

    Hallo miteinander,

    Ich bin aktuell bei der Implementierung eines brauchbaren möglichst generischen Rechtesystems. Und stoße hier noch auf Designprobleme.

    Die rollengebunden Rechte bereiten mir dabei keine Probleme, damit fange ich dann u.a. ab wenn Nutzer beispielsweise ohne "Admin"-Rolle auf entsprechende Routen zugreifen wollen.

    Allerdings habe ich zusätzlich oft noch "Individualrechte" nach dem Motto "Jeder Nutzer darf seine eigene Profilseite ändern", "Jeder Nutzer darf das Profil all seiner Freunde aufrufen".
    Hier Ende ich bei meinen Konzepten immer bei 2 Extremen. Entweder ich hole mir Code ins Haus der von impliziten Konventionen abhängt. D.h. ich definiere mir diese zusätzlichen Rechte und schreibe sie zu den Routes dazu, wenn dort dann also "only_friend" oder "only_own" auftaucht wird für die jeweilige angefragte Route in der Datenbank nach der dazu eingetragenen account_id geguckt.
    Dafür müsste aber nun die angefragte Route immer ein entsprechendes Gegenstück als Datenbanktabelle haben und zusätzlich muss dort die Spalte account_id als "Besitzerspalte" auftauchen.

    Meine Alternative dazu wird dann immer sehr umfangreich. Ich erstelle mir zu jedem Controller noch ein Authenticate Gegenstück und habe dort für jede mögliche Aktion eine Methode hinterlegt, welche true oder false zurückgibt. In den Methoden kann ich dann komplett nach Bedarf prüfen.

    Oder ist es vielleicht sogar sinnvoller diese "individuelle" Prüfung nach Ausführung der Route im Controller zu machen? Das scheint mir von der Komplexität ein "Mittelding" zu werden, andererseits fühle ich mich nicht ganz wohl die Authentifizierung erst im Controller durchzuführen, den Ansatz "Wer nicht authentifiziert ist, kommt garnicht über das Routing hinaus" finde ich da tendenziell schöner.

    Wie sehen da eure Ansätze aus? Gibts vielleicht eine "Lieblingsbibliothek" die ihr für Authentifizierung einbindet?

    Liebe Grüße


  • #2
    Individuelle Rechte, das Problem verstehe ich nicht.

    /profile/edit

    is A = A else throw

    /view/post/x

    is A friendOf X

    /view/posts

    getFriendsOfX -> get Posts

    etwa so geht doch gut oder.

    Kommentar


    • #3
      Wo würdest du diese "Logik" Implementieren und wie würdest du sie aufrufen?

      Kommentar


      • #4
        Zitat von ChromOxid Beitrag anzeigen
        Wo würdest du diese "Logik" Implementieren und wie würdest du sie aufrufen?
        https://www.sitepoint.com/control-us...ds-with-rauth/

        ich würde ein Authenticate Controller basteln und in der "before" action die Rollen prüfen oder als Middleware dann braucht man keine Ableitung
        apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp

        Kommentar


        • #5
          Ich wollte eher darauf hinaus, das Fargestellungen wie:
          "Jeder Nutzer darf seine eigene Profilseite ändern", "Jeder Nutzer darf das Profil all seiner Freunde aufrufen".
          in meinen Augen keine Probleme der Authorisation, sondern der Datenabfrage sind.

          Zu der Frage was ich nutze:
          https://silex.symfony.com/doc/2.0/pr.../security.html
          finde ich ganz handy

          Kommentar


          • #6
            in meinen Augen keine Probleme der Authorisation, sondern der Datenabfrage sind.
            Das heißt wo würde diese Überprüfung bei dir stattfinden? Oder noch allgemeiner gefragt, wie gehst du mit solchen "datenbezogenen" Beschränkungen um?
            Vermutlich hast du Recht damit, dass es nicht dem Thema Authorisation zugeordnet wird, deshalb fällt es mir leider schwer, dazu "Best Practices" oder ähnliches zu finden.

            https://www.sitepoint.com/control-us...ds-with-rauth/

            ich würde ein Authenticate Controller basteln und in der "before" action die Rollen prüfen oder als Middleware dann braucht man keine Ableitung
            Da geht es leider auch nur um Rollen, das bereitet mir soweit keine Probleme und funktioniert ganz gut. Anbei ich persönlich finde es etwas gruselig die Zugriffsrechte in Annotations (im Endeffekt in Kommentaren) zu gestalten, wird das wirklich so gemacht?

            ich würde ein Authenticate Controller basteln und in der "before" action die Rollen prüfen oder als Middleware dann braucht man keine Ableitung
            Die Rollenprüfung findet bei mir in ähnlicher Form statt.

            Kommentar


            • #7
              Ich finds mit Annotation auch gruselig aber schau dir Doctrine an, die Annotationen sind ja nur als "Lazy lösung" da, du kannst es auch über eine Configuration mit Pattern und ROllen usw lösen
              apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp

              Kommentar

              Lädt...
              X