5.2 Hitelesítés (Authentication)
The original text for this section has changed since it was translated. Please help resolve this difference. You can:
A felhasználói hitelesítés sok webes alkalmazás alapvető része. A CakePHP-ben több rendszer is van a hitelesítéshez, amelyek különböző opciókat ajánlanak. Alap esetben a hitelesítő Komponens leellenőrzi, hogy a felhasználó rendelkezik-e az oldalon hozzáféréssel. Ha igen, akkor a komponens hozzáférést biztosít a user számára a teljes weboldalhoz.
Ez a komponens kombinálható az ACL (hozzáférés vezérlő listák) komponenssel, hogy még összetettebb felhasználói szinteket kezelhessünk az oldalon. Az ACL Komponens például lehetővé teszi, hogy az egyik user teljes hozzáférést kapjon az oldalhoz, míg mások a védett adminisztratív oldalakhoz ne férjenek hozzá.
A CakePHP AuthComponent-je segítségével egy ilyen rendszer könnyne és gyorsan megvalósítható. Lássuk, hogy hogyan építsünk fel egy nagyon egyszerű hitelesítési rendszert.
Mint minden komponenst a Vezérlő $components tömbjével tehetjük elérhetővé:
class FooController extends AppController {
var $components = array('Auth');
class FooController extends AppController {var $components = array('Auth');
Ha az AppController-ben adod hozzá akkor minden Vezérlőben tudod majd használni:
class AppController extends Controller {
var $components = array('Auth');
class AppController extends Controller {var $components = array('Auth');
Az AuthComponent használatához tudnod kell egy pár konvencióról. Alapértelmezés szerint az AuthComponent azt várja el, hogy van egy 'users' táblád 'username' és 'password' mezőkkel. Bizonyos esetekben az adatbázis nem fogja engedni, hogy a 'password'-öt használd oszlop névként, később látni fogod, hogy hogyan definiáld felül az alapbeállításokat.
Hozzuk létre a táblát a következő SQL utasítással:
CREATE TABLE users (
id integer auto_increment,
username char(50),
password char(50),
PRIMARY KEY (id)
);
CREATE TABLE users (id integer auto_increment,username char(50),password char(50),PRIMARY KEY (id));
Amit még tudnod kell, az, hogy az AuthComponent arra számít, hogy a jelszavak titkosítva kerülnek tárolásra és nem sima szövegként. Bizonyosodj meg róla, hogy a jelszavak tárolására használt meződ elég hosszú ahhoz, hogy el tudjon tárolni egy hash-t (például SHA1 titkosítás esetén 40 karakter).
A legalapvetőbb beállításhoz két tevékenységet kell létrehoznod a Vezérlődben:
class UsersController extends AppController {
var $name = 'Users';
var $components = array('Auth'); // ez nem is kell ha már bent van az AppControllerben
/**
* Az AuthComponent biztosítja a szükséges eljárásokat
* a bejelentkezéshez, így ezt a metódust üresen hagyhatod
*/
function login() {
}
function logout() {
$this->redirect($this->Auth->logout());
}
}
class UsersController extends AppController {var $name = 'Users';var $components = array('Auth'); // ez nem is kell ha már bent van az AppControllerben/*** Az AuthComponent biztosítja a szükséges eljárásokat* a bejelentkezéshez, így ezt a metódust üresen hagyhatod*/function login() {}function logout() {$this->redirect($this->Auth->logout());}}
Habár üresen hagyhatod a login() függvényt létre kell hoznod a login nézet sablont (az app/views/users/login.ctp fájlban). Ez az egyetlen UsersController nézet sablon amit egyáltalán létre kell hoznod. A lenti példa feltételezi, hogy már használod a Form Segítőt:
<?php
if ($session->check('Message.auth')) $session->flash('auth');
echo $form->create('User', array('action' => 'login'));
echo $form->input('username');
echo $form->input('password');
echo $form->end('Login');
?>
<?phpif ($session->check('Message.auth')) $session->flash('auth');echo $form->create('User', array('action' => 'login'));echo $form->input('username');echo $form->input('password');echo $form->end('Login');?>
Ez a nézet egy egyszerű bejelentkezési formot hoz létre, ahol megadhatod a felhasználói nevet és a jelszót. Amint elküldöd a formot az AuthComponent elintézi a többit. A session flash üzenet meg fog jelenni bármilyen üzenetet is generál az AuthComponent.
Hiszed vagy sem kész is vagyunk! Ez a módja egy nagyon egyszerű adatbázis alapú hitelesítési rendszer létrehozásának az Auth Komponens segítségével. Persze van még mit csinálnunk. Ássunk kicsit mélyebbre a Komponens használatával kapcsolatban.
