{"id":106,"date":"2010-02-26T09:42:44","date_gmt":"2010-02-26T08:42:44","guid":{"rendered":"http:\/\/www.webmaid.de\/?p=106"},"modified":"2010-03-13T18:49:02","modified_gmt":"2010-03-13T17:49:02","slug":"authentication-in-cakephp","status":"publish","type":"post","link":"https:\/\/www.webmaid.de\/2010\/02\/authentication-in-cakephp\/","title":{"rendered":"Authentication in CakePHP"},"content":{"rendered":"

CakePHP ist ein Rapid Development Framework f\u00fcr PHP. Es besteht zwar auf viele Namenskonventionen, aber im Gegenzug nimmt es auch viel Arbeit ab. Um z.b. eine User-Identifizierung mittels FORM durchzuf\u00fchren ist der Code sehr sehr \u00fcbersichtlich.
\n
\nErst einmal ben\u00f6tigen wir eine Datenbank, welche die Userdaten speichert. Diese Datenbank kann weitere beliebige Attribute besitzen; zur \u00dcbersichtlichkeit werden hier nur die n\u00f6tigsten angegeben.<\/p>\n

CREATE TABLE users (\r\n   id bigint unsigned not null auto_increment,\r\n   username varchar(30) not null,\r\n   password varchar(40) not null,\r\n   PRIMARY KEY(id), UNIQUE KEY(username)\r\n);<\/code><\/pre>\n

Aus dieser Tabelle liest CakePHP Authentication die User aus und vergleicht das „verschl\u00fcsselte“ Passwort mit dem angegeben. Um dies zu erreichen ben\u00f6tigen wir noch einen AppController (UsersController).<\/p>\n

class UsersController extends AppController {\r\n\tvar $components = array(\r\n\t   'Auth' => array('loginAction' => \r\n             array('controller' => 'users', 'action' => 'login'))\r\n\t);\r\n        function beforeFilter() {\r\n           \/\/ Funktionen angeben, welche man auch ohne Login aufrufen darf\r\n           $this->Auth->allow('register');\r\n           \/\/ Falls man andere Namen in der DB hat, kann man diese hier angeben\r\n\t   $this->Auth->fields = array(\r\n\t       'username' => 'username', \r\n\t       'password' => 'password'\r\n\t   );\r\n\t}\r\n\r\n\tfunction login() {}\r\n\t\t\r\n\tfunction logout() {\r\n\t   $this->redirect($this->Auth->logout());\r\n\t}\r\n}<\/code><\/pre>\n

Eine sehr \u00fcbersichtliche Klasse, da die „Kernkomponente“ Authentication von CakePHP die meiste Arbeit erledigt. Der Code l\u00e4uft erst mit CakePHP >1.3.<\/p>\n

\n