Ankündigung

Einklappen
Keine Ankündigung bisher.

Rightmanagement mit ZEND Framework

Einklappen

Neue Werbung 2019

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

  • Rightmanagement mit ZEND Framework

    Hallo,

    ich habe eine Webapplikation, mit welcher man bestimmte Usergruppen erstellen kann und diesen Usergruppen auch variabel Rechte zuweisen kann.

    Beispiel:
    Gruppe1 => Recht1

    Recht1 ist fest definiert, man kann selbst keine eigenen Rechte hinzufügen.

    Nun benutze ich das ZEND Framework und muss irgendwie abfragen, ob der User welcher eingeloggt ist in diese Gruppe gehört um Aktion XY wofür Recht1 benötigt wird auszuführen.

    Vorher habe ich es so gemacht, dass alle Gruppen in das $_Session Array gespeichert werden.

    Ist natürlich doof, wenn man eingeloggt ist, die Rechte entzogen bekommt es sich aber nichts updated weil es ebend noch auf dem Server im $_SESSION Array gespeichert ist.

    Nun habe ich mir gedacht, dass das ZEND Framework doch für solche Dinge
    sicher etwas parrat haben müsste um es zu vereinfachen.

    Denn allg. das Rechtemanagement bei Usern kommt doch so gut wie in jeder Applikation vor...

    Falls ZEND dies nicht besitzt, wie macht ihr es ?

    Mir würde auf anhieb einfallen dass ich anhand der gesetzten UserID in $_Session mir die Gruppen hole welche er gehört und dann überprüfe ob Recht XY vorhanden ist.

    Gibt es nocht andere (vllt sogar Zend spezifische) Methoden ?

    Danke im voraus,

    Catcher


    P.S.:
    Leider spuckt google unter "Zend rightmanagement" gar nichts aus... wahrscheinlich das falsche Wort zum suchen ?


  • #2
    Zitat von dreamcatcher Beitrag anzeigen
    Leider spuckt google unter "Zend rightmanagement" gar nichts aus... wahrscheinlich das falsche Wort zum suchen ?
    http://www.google.com/search?q=zend+...ole+management -> http://framework.zend.com/manual/en/...roduction.html

    Kommentar


    • #3
      Ich halte den Tipp mal allgemeiner, damit du gleich das richtige in die Favoriten packst: http://framework.zend.com/manual/en/
      Scheint dir ja unbekannt zu sein, nachdem dir noch nichtmal die ACL begegnet ist.
      actra.development - Zend Certified Engineer for PHP5 - actra-oss @ github

      Kommentar


      • #4
        @Chris, genau das war es, danke

        Zitat von G.Schuster Beitrag anzeigen
        Ich halte den Tipp mal allgemeiner, damit du gleich das richtige in die Favoriten packst: http://framework.zend.com/manual/en/
        Scheint dir ja unbekannt zu sein, nachdem dir noch nichtmal die ACL begegnet ist.
        Habe ebend auf deine Seite gesehen, dass du die Prüfung der Firma Zend bestanden hast und somit dein Zertifikat erhalten hast.

        Wie hast du dich auf die Prüfung vorbereitet bzw. welches Material hast du vor der Prüfung gepaukt ?

        Hatte bereits im Internet geschaut und ein Buch gefunden, welcher jedoch schlecht bewertet wurde da der Inhalt wohl nicht korrekt sein soll z.T..

        Würde mich über eine Antwort riesig freuen

        Kommentar


        • #5
          Am einfachsten ist es wenn du die Zend ACL dafür verwendest.

          Hier mal ein kleines Beispiel aus einem Game was mit Zend erstellt worden ist:
          PHP-Code:
          <?php
          class Civitas_Acl_Public extends Zend_Acl
          {
              public function 
          __construct()
              {
                  
          // Rollen hinzufügen
                  
          $this->addRole(new Zend_Acl_Role('guest'));
                  
          $this->addRole(new Zend_Acl_Role('member'), 'guest');
                  
          $this->addRole(new Zend_Acl_Role('admin'));
                  
                  
          // Ressourcen hinzufügen
                  
          $this->addResource(new Zend_Acl_Resource('index'));
                  
          $this->addResource(new Zend_Acl_Resource('downloads'));
                  
          $this->addResource(new Zend_Acl_Resource('history'));
                  
          $this->addResource(new Zend_Acl_Resource('information'));
                  
          $this->addResource(new Zend_Acl_Resource('rules'));
                  
          $this->addResource(new Zend_Acl_Resource('screenshots'));
                  
          $this->addResource(new Zend_Acl_Resource('team'));
                  
          $this->addResource(new Zend_Acl_Resource('news'));
                  
          $this->addResource(new Zend_Acl_Resource('user'));
                  
                  
          // Rechte hinzufügen
                  
          $this->allow('guest''index');
                  
          $this->allow('admin''index');
                  
                  
          $this->allow('guest''downloads');
                  
          $this->allow('admin''downloads');
                  
                  
          $this->allow('guest''history');
                  
          $this->allow('admin''history');
                  
                  
          $this->allow('guest''information');
                  
          $this->allow('admin''information');
                  
                  
          $this->allow('guest''rules');
                  
          $this->allow('admin''rules');
                  
                  
          $this->allow('guest''screenshots');
                  
          $this->allow('admin''screenshots');
                  
                  
          $this->allow('guest''team');
                  
          $this->allow('admin''team');
                  
                  
          $this->allow('guest''news', array('index''list''show'));
                  
          $this->allow('admin''news');
                  
                  
          $this->allow('guest''user', array('index''login''register''forbidden'));
                  
          $this->allow('member''user');
                  
          $this->deny('member''user', array('login''register'));
                  
          $this->allow('admin''user'); 
              }
          }

          Kommentar


          • #6
            Irrc kann in Zend_Auth::allow() auch ein * als Platzhalter für alle Resourcen angegeben werden (sinnvoll für die Role „admin”).

            Kommentar


            • #7
              Also dank euch habe ich noch eine weitere Quelle mit Sourcecodes gefunden:
              http://stackoverflow.com/questions/5...best-practises

              Soweit ich es sehe muss man aber vorher immer wissen, was es für Rollen gibt denen man dann eine Permission zuweist die Ressource sehen zu dürfen.

              Ist dies richtig so aufgefasst ?
              (In den Beispielen sah ich es immer so)

              In meine Webapplikationen ist es jedoch so, dass Rollen selbst angelegt werden können und die Rechte eine Ressource zu benutzen für diese Gruppe selbst festgelegt werden kann.

              Dann ist es dafür scheinbar nicht geeigent... sehe ich das richtig ?



              Was ich außerdem dazu fand, was denke ich meine Vermutung bestätigt:

              Zend_Acl was designed in such a way that it does not require any particular backend technology such as a database or cache server for storage of the ACL data. Its complete PHP implementation enables customized administration tools to be built upon Zend_Acl with relative ease and flexibility.

              Quelle:http://framework.zend.com/manual/en/....advanced.html

              Kommentar


              • #8
                Da steht „does not require”. D.h. nicht dass deine Rules nicht von einer Datenbank oder Model kommen dürfen. Ich würde empfehlen auch auf Zend_Acl aufzubauen, da einige Komponenten Zend_Acl unterstützen (Zend_Navigation z.B.).

                Siehe: http://framework.zend.com/wiki/displ...tabase+backend

                Kommentar


                • #9
                  Zitat von dreamcatcher Beitrag anzeigen
                  Dann ist es dafür scheinbar nicht geeigent... sehe ich das richtig ?

                  Was ich außerdem dazu fand, was denke ich meine Vermutung bestätigt:
                  Du zitierst einen Satz, der genau das beschreibt, was du vorhast, und liest daraus, dass das, was du vorhast, nicht möglich wäre?
                  Na die Logik erklär' mir mal.
                  Oder was genau an "Its complete PHP implementation enables customized administration tools to be built upon Zend_Acl with relative ease and flexibility." bedeutet für dich, dass man keine Administration für die ACL schreiben kann?

                  Über ein Zertifizierung solltest du meiner meinung nach mit diesem Wissensstand noch gar nicht nachdenken, die macht nur Sinn, wenn entsprechende Erfahrung vorliegt, nicht, wenn man sich mal eben drei Bücher reinkloppen kann.

                  [...] den Rest denk' ich mir jetzt nur [...]
                  actra.development - Zend Certified Engineer for PHP5 - actra-oss @ github

                  Kommentar

                  Lädt...
                  X