Rechtevergabe in cakePHP - Tutorial oder Alternative?

170 views
Skip to first unread message

miv...@mivogt.net

unread,
May 27, 2011, 5:55:14 AM5/27/11
to CakePHP-de für deutsche CakePHP Entwickler
Hallo Leute,

ich habe nun einige Stunden über meinen 3 Büchern für Cake und der
online Doku von Cake gebrütet ohne viel schlauer zu werden.

Das gesamte Baumbasierte Rechte-Management scheint mir sehr schlecht
dokumentiert und zudem reichlich kompliziert.

Gibt es irgendwo ein vollständiges und verständliches Tutorial für
Auth und ACL?
Bisher habe ich gerade mal hinbekommen mit Auth ein Login zu
realisieren.
--> leider weiss ich nicht wie cake die Passworte er-hasht; würde
gerne die User manuell in der DB anlegen bzw im UserAddView dann das
eingegebene Pwd auch passend hashen lassen (scheint mit dem SecSalt
verrechnet zu werden..?)

Falls es keine einfache Lösung für die Rechtevergabe gibt:
- wie kann ich abfragen welcher User angemeldet ist?
- wie/wo frage ich ab welche Action gerade aufgerufen wurde/werden
soll
- wo müsste ich ggf VOR der Ausführung einer Action meine
Rechteprüfung parken wenn ich mir selber eine stricken will (um bei
jeder Action zu prüfen ob die rechte reichen)?

.. die Anzahl der geplantet User wird überschaubar bleiben

Würde mich über jede Hilfe freuen

Grüße

Michael

enigmartin

unread,
May 27, 2011, 7:30:49 AM5/27/11
to CakePHP-de für deutsche CakePHP Entwickler
On 27 Mai, 11:55, "miv...@mivogt.net" <miv...@mivogt.net> wrote:
> Hallo Leute,
>
> ich habe nun einige Stunden über meinen 3 Büchern für Cake und der
> online Doku von Cake gebrütet ohne viel schlauer zu werden.
>
> Das gesamte Baumbasierte Rechte-Management scheint mir sehr schlecht
> dokumentiert und zudem reichlich kompliziert.
>
> Gibt es irgendwo ein vollständiges und verständliches Tutorial für
> Auth und ACL?
> Bisher habe ich gerade mal hinbekommen mit Auth ein Login zu
> realisieren.

Schaue dir mal diese Playliste bei Youtube an. Ich habe die ACL
dadurch sehr gut verstanden auch wenn ich noch nicht alles 100%
verinnerlicht habe:

http://www.youtube.com/watch?v=nO9oSQhRa9s&playnext=1&list=PL01618F1E2892635F

Ansonsten noch die Tutorials im Kochbuch. Spätestens bei dem ACL
Tutorial sollte man sich mit der Cake Console auskennen:
http://book.cakephp.org/view/1527/Tutorials-Examples

> --> leider weiss ich nicht wie cake die Passworte er-hasht; würde
> gerne die User manuell in der DB anlegen bzw im UserAddView dann das
> eingegebene Pwd auch passend hashen lassen (scheint mit dem SecSalt
> verrechnet zu werden..?)

Ich glaube in den Tutorials wird dir auch erklärt wie die Passwörter
gehasht werden. Das müsste da vorkommen wo die Passwort-Bestätigung
bei der Registrierung eingefügt wird. Da muss die Passwort-Bestätigung
einmal von Hand neu gehasht und mit dem vorherigen verglichen werden.

>
> Falls es keine einfache Lösung für die Rechtevergabe gibt:
> - wie kann ich abfragen welcher User angemeldet ist?

Dazu müsstest du in deiner Datenbank weiteres Feld einfügen. Bei mir
heißt es login_status, dazu habe noch last_login um zu sehen wann der
Benutzer das letzte mal aktiv war. Die Daten musst du dann aber manual
in den Controller speichern, einmal bei login und wieder beim logout

> - wie/wo frage ich ab welche Action gerade aufgerufen wurde/werden
> soll

Was genau meinst du? Lies mal über <?php pr($this) ?> deine Daten aus,
da stehen so ziemlich alle Daten die du benötigst. In $this->params
solltest du die actions finden.

> - wo müsste ich ggf VOR der Ausführung einer Action meine
> Rechteprüfung parken wenn ich mir selber eine stricken will (um bei
> jeder Action zu prüfen ob die rechte reichen)?

Das ist in oben genannten Tutorials ganz gut beschrieben.

Martin Skroch

unread,
May 27, 2011, 7:28:23 AM5/27/11
to cakep...@googlegroups.com
Am 27. Mai 2011 11:55 schrieb miv...@mivogt.net <miv...@mivogt.net>:
Hallo Leute,

ich habe nun einige Stunden über meinen 3 Büchern für Cake und der
online Doku von Cake gebrütet ohne viel schlauer zu werden.

Das gesamte Baumbasierte Rechte-Management scheint mir sehr schlecht
dokumentiert und zudem reichlich kompliziert.
Gibt es irgendwo ein vollständiges und verständliches Tutorial für
Auth und ACL?
Bisher habe ich gerade mal hinbekommen mit Auth ein Login zu
realisieren.
Schaue dir mal diese Playliste bei Youtube an. Ich habe die ACL dadurch sehr gut verstanden auch wenn ich noch nicht alles 100% verinnerlicht habe:

http://www.youtube.com/watch?v=nO9oSQhRa9s&playnext=1&list=PL01618F1E2892635F

Ansonsten noch die Tutorials im Kochbuch. Spätestens bei dem ACL Tutorial sollte man sich mit der Cake Console auskennen:
http://book.cakephp.org/view/1527/Tutorials-Examples
 
--> leider weiss ich nicht wie cake die Passworte er-hasht; würde

gerne die User manuell in der DB anlegen bzw im UserAddView dann das
eingegebene Pwd auch passend hashen lassen (scheint mit dem SecSalt
verrechnet zu werden..?)
Ich glaube in den Tutorials wird dir auch erklärt wie die Passwörter gehasht werden. Das müsste da vorkommen wo die Passwort-Bestätigung bei der Registrierung eingefügt wird. Da muss die Passwort-Bestätigung einmal von Hand neu gehasht und mit dem vorherigen verglichen werden.

Falls es keine einfache Lösung für die Rechtevergabe gibt:
- wie kann ich abfragen welcher User angemeldet ist?
Dazu müsstest du in deiner Datenbank weiteres Feld einfügen. Bei mir heißt es login_status, dazu habe noch last_login um zu sehen wann der Benutzer das letzte mal aktiv war. Die Daten musst du dann aber manual in den Controller speichern, einmal bei login und wieder beim logout
 
- wie/wo frage ich ab welche Action gerade aufgerufen wurde/werden
soll

Was genau meinst du? Lies mal über <?php pr($this) ?> deine Daten aus, da stehen so ziemlich alle Daten die du benötigst. In $this->params solltest du die actions finden.
 
- wo müsste ich ggf VOR der Ausführung einer Action meine

Rechteprüfung parken wenn ich mir selber eine stricken will (um bei
jeder Action zu prüfen ob die rechte reichen)?

Das ist in oben genannten Tutorials ganz gut beschrieben.

.. die Anzahl der geplantet User wird überschaubar bleiben

Würde mich über jede Hilfe freuen

Grüße

Michael

--
Bitte bei Fragen immer auch die aktuell verwendete cakePHP Version angeben und
wenn möglich auch das verwendete Betriebssystem und die PHP Version. Danke.
Sie erhalten diese Nachricht, weil Sie Mitglied sind von Google Groups-Gruppe "CakePHP-de für deutsche CakePHP Entwickler".
 Für das Erstellen von Beiträgen in dieser Gruppe senden Sie eine E-Mail
an cakep...@googlegroups.com
 Um sich von dieser Gruppe abzumelden, senden Sie eine E-Mail an cakephp-de-...@googlegroups.com
 Weitere Optionen finden Sie in dieser Gruppe unter http://groups.google.com/group/cakephp-de?hl=de

Anja Liebermann

unread,
May 27, 2011, 6:46:59 AM5/27/11
to cakep...@googlegroups.com
Hallo Michael,

da hast du dir eines der haarigsten Themen bei Cake ausgesucht.

das wirst du durchgearbeite haben denke ich:
http://book.cakephp.org/view/1250/AuthenticationDas ist auch noch ein Tipp:
http://mark-story.com/posts/view/auth-and-acl-an-end-to-end-tutorial-pt-1

Defaultverschl�sselung ist Sha1 und nicht MD5. Erste User legst du dir
an indem du erstmal alle Aktionen erlaubst und erst danach einschr�nkst.

Acl... ohweia... das ist bei mir 2,5 Jahre her, da� ich das einmal
angewandt habe. Was ich noch wei�, ist da� man die Rechte f�r jede
Action einzeln festlegen mu�te.

Anja

Am 27.05.2011 11:55, schrieb miv...@mivogt.net:
> Hallo Leute,
>

> ich habe nun einige Stunden �ber meinen 3 B�chern f�r Cake und der
> online Doku von Cake gebr�tet ohne viel schlauer zu werden.


>
> Das gesamte Baumbasierte Rechte-Management scheint mir sehr schlecht
> dokumentiert und zudem reichlich kompliziert.
>

> Gibt es irgendwo ein vollst�ndiges und verst�ndliches Tutorial f�r


> Auth und ACL?
> Bisher habe ich gerade mal hinbekommen mit Auth ein Login zu
> realisieren.

> --> leider weiss ich nicht wie cake die Passworte er-hasht; w�rde


> gerne die User manuell in der DB anlegen bzw im UserAddView dann das
> eingegebene Pwd auch passend hashen lassen (scheint mit dem SecSalt
> verrechnet zu werden..?)
>

> Falls es keine einfache L�sung f�r die Rechtevergabe gibt:


> - wie kann ich abfragen welcher User angemeldet ist?
> - wie/wo frage ich ab welche Action gerade aufgerufen wurde/werden
> soll

> - wo m�sste ich ggf VOR der Ausf�hrung einer Action meine
> Rechtepr�fung parken wenn ich mir selber eine stricken will (um bei
> jeder Action zu pr�fen ob die rechte reichen)?
>
> .. die Anzahl der geplantet User wird �berschaubar bleiben
>
> W�rde mich �ber jede Hilfe freuen
>
> Gr��e
>
> Michael
>

anja_liebermann.vcf

Florian Krämer

unread,
Jun 7, 2011, 7:15:16 PM6/7/11
to cakep...@googlegroups.com


On Friday, May 27, 2011 1:30:49 PM UTC+2, enigmartin wrote:
On 27 Mai, 11:55, "miv...@mivogt.net" <miv...@mivogt.net> wrote:

> Das gesamte Baumbasierte Rechte-Management scheint mir sehr schlecht
> dokumentiert und zudem reichlich kompliziert.

Ja und nein. Rechte sind nicht immer gleich ACL. Rechte können auch anders implementiert werden. Es gibt weder für die Verwendung von ACL noch für Rechte im Allgemeinen ein Patentrezept. Es ist eigentlich so gut wie immer von den Anforderungen des Projektes abhängig. Ich glaube für das was Du willst ist ACL zu viel des Guten. Beschreib bitte mal Deine Anforderungen.
 
> Gibt es irgendwo ein vollständiges und verständliches Tutorial für
> Auth und ACL?

Auth hat erst mal nichts direkt mit Rechten zu tun. Auth(entifizierung) stellt nur sicher das X angemeldet ist. Mehr erst mal nicht.
 
> Bisher habe ich gerade mal hinbekommen mit Auth ein Login zu
> realisieren.

Schau Dir das Plugin hier an.

Wir verwenden es für alle unsere Projekte und erweitern das Plugin bzw. die Klassen auf App-Ebene und überladen halt was wir brauchen.
 
 > --> leider weiss ich nicht wie cake die Passworte er-hasht; würde 
> gerne die User manuell in der DB anlegen bzw im UserAddView dann das
> eingegebene Pwd auch passend hashen lassen (scheint mit dem SecSalt
> verrechnet zu werden..?)

Schlag in der API Security::password() und Auth::password() nach. 

> Falls es keine einfache Lösung für die Rechtevergabe gibt:
> - wie kann ich abfragen welcher User angemeldet ist?

Wie schon gesagt, das hat mit Rechten nichts zu tun.Aber wenn nicht anders implementiert schreibt Auth normal die aktuellen Userdaten in die Session. Erreichbar via $this->Auth->user() bzw. $this->Auth->user('key'); Oder eben durch $this->Session->read('Auth.UserModelName');
 
Dazu müsstest du in deiner Datenbank weiteres Feld einfügen. Bei mir
heißt es login_status, dazu habe noch last_login um zu sehen wann der
Benutzer das letzte mal aktiv war. Die Daten musst du dann aber manual
in den Controller speichern, einmal bei login und wieder beim logout

> - wie/wo frage ich ab welche Action gerade aufgerufen wurde/werden
> soll

Falls es jetzt ;) um die Rechte geht: Schau Dir den Code der Auth Component an und schlag isAuthorized() nach. Im AppController kannst Du einen Check in der Methode implementieren. Deine aktuelle Action kriegst Du durch $this->action.
 
> - wo müsste ich ggf VOR der Ausführung einer Action meine
> Rechteprüfung parken wenn ich mir selber eine stricken will (um bei
> jeder Action zu prüfen ob die rechte reichen)? 

Das wird in isAuthorized() implementiert.
Reply all
Reply to author
Forward
0 new messages