15 Hozzáférést Vezérlő Listák (ACL-ek)
Hogyan működnek az ACL-ek?
A legfontosabb, leghatékonyabb dolgokhoz szükséges egyfajta hozzáférés ellenÅ‘rzés. Az ACL-ek (Access Control Lists - Hozzáférést VezérlÅ‘ Listák) segÃtségével az alkalmazásunkhoz való hozzáférést apró lépésekben, mégis könnyen kezelhetÅ‘en és módosÃthatóan engedélyezhetjük vagy tilthatjuk. Az ACL-ek két dolgot kezelnek: olyan dolgokat, amik akarnak valamit, és olyan dolgokat amiket mi szeretnénk elérni. Az ACL szaknyelvben a dolgokat (többnyire felhasználók), amik/akik használni szeretnének valamit, ARO-nak (Access Request Object - Hozzáférést KérÅ‘ Objektum) hÃvjuk. A rendszer azon dolgait, amiket el szeretnénk érni (leginkább különféle események illetve adatok), ACO-nak (Access Control Object - Hozzáférést Kontrolláló Objektum) hÃvjuk.
Azért hÃvjuk ezeket "objektumnak", mert néha a kérést adó objektum nem egy személy; néha bizonyos Cake vezérlÅ‘k hozzáférését a rendszer egyéb részeihez is korlátozni kell. Az ACO-k lehetnek egy vezérlÅ‘ eseményei, egy webszolgáltatás, vagy akár nagymamád blogjának egy bejegyzése - egyszóval bármi, amit felügyelni akarsz.
Hogy az összes rövidÃtést egyszerre használjuk: az ACL az, amit arra használunk, hogy eldöntsük, mikor tud hozzáférni egy ARO egy ACO-hoz.
Na most, hogy segÃtsünk a megértésben, vegyünk egy példát a gyakorlatból. Képzelj el egy pillanatra egy számÃtógépes rendszert, amit kalandorok egy csoportja használ. A csoport vezetÅ‘je gyorsan akar elÅ‘renyomulni a küldetéssel, miközben egy egészséges mértékű magánszférát és biztonságot is fenn akar tartani a többi kalandor számára. Az ARO-k tehát:
Gandalf Aragorn Bilbo Frodo Gollum Legolas Gimli Pippin Merry
GandalfAragornBilboFrodoGollumLegolasGimliPippinMerry
A fentiek olyan elemek, amik ACO-kat fognak kérni a rendszertÅ‘l. Itt fontos megjegyezni, hogy az ACL nem a felhasználók azonosÃtására szolgál. Erre a célra már lennie kell egy módszernek, ahogy a felhasználói információkat tárolod, és ahogy ellenÅ‘rzöd egy felhasználó személyazonosságát. Csak onnantól tudod az ACL nagyszerű képességeit használni, amikor mindez már megvan. De rendben, most térjünk vissza a kalandunkhoz.
A következÅ‘ dolog, amit Gandalfnak meg kell tennie, egy lista készÃtése (ACO-k), amiket a rendszer kezelni fog. Ez a lista kinézhet pl. Ãgy:
Fegyverek A Gyűrű Füstölt hús Diplomácia Sör
FegyverekA GyűrűFüstölt húsDiplomáciaSör
Hagyományosan a rendszerek jogosultságai egyfajta mátrixban voltak leÃrva, ami a felhasználók és az objektumok halmazából állt. Ha mindezt egy táblában tárolnánk, hasonlóképpen nézne ki mint ez (X - hozzáférés megtagadva, O - engedélyezve):
Fegyverek A Gyűrű Füstölt hús Diplomácia Sör Gandalf X X O O O Aragorn O X O O O Bilbo X X X X O Frodo X O X X O Gollum X X O X X Legolas O X O O O Gimli O X O X X Pippin X X X O O Merry X X X X O
Fegyverek A Gyűrű Füstölt hús Diplomácia SörGandalf X X O O OAragorn O X O O OBilbo X X X X OFrodo X O X X OGollum X X O X XLegolas O X O O OGimli O X O X XPippin X X X O OMerry X X X X O
ElsÅ‘ pillanatra ez a rendszer egész jól működhet. A biztonságos hozzáférést be tudjuk tartatni (csak Frodo érheti ek a Gyűrűt), és védelmet nyújt a balesetek ellen (a hobbitok nem nyúlhatnak a füstölt húshoz). Eléggé részletesnek és könnyen megérthetÅ‘nek tűnik, nem?
Nos, egy ilyen kis rendszerhez a mátrix alapú beállÃtás elég lehet. De egy növekvÅ‘ rendszerben, vagy egy rengeteg erÅ‘forrással (ACO-k) és felhasználóval (ARO-k) rendelkezÅ‘ben, egy tábla mint ez, egész gyorsan kezelhetetlenné válik. Képzeld csak el, hogy több száz háborús táborhelyhez próbálod a hozzáférést szabályozni, és mindezt egyesével teszed. A mátrixok egy másik hátulütÅ‘je, hogy nem igazán lehet logikailag a felhasználókat csoportokba rendezni, illetve hierarchikus jogosultság változtatásokat végrehajtani ezeken a csoportokon. Például tök jó lenne a hobbitoknak automatikusan elérést adni a sörhöz és a húshoz, amint a csatának vége. Egyesével minden felhasználónál beállÃtani mindezt eléggé fárasztó és könnyen lehet hibázni - mÃg ezzel szemben egy hierarchikus változtatást az összes 'hobbit'-ra végrehajtani pillanatok műve.
Az ACL többnyire fa-struktúraként van megvalósÃtva. általában van egy ARO fa, és egy ACO fa. A különféle objektumainkat fa-struktúrába rendezve a jogosultságokat még mindig könnyedén, ugyanakkor a teljes rendszeren egy átfogó képet kapva tudjuk megoldani. Mivel Gandalf egy bölcs vezetÅ‘, ezért ACL-ek segÃtségével rendezi a különféle objektumait az alábbi módon:
A Gyűrű Szövetsége: Harcosok Aragorn Legolas Gimli Varázslók Gandalf Hobbitok Frodo Bilbo Merry Pippin Vendégek Gollum
A Gyűrű Szövetsége:HarcosokAragornLegolasGimliVarázslókGandalfHobbitokFrodoBilboMerryPippinVendégekGollum
Kis csapatunkat ily módon struktúrálva most már megadhatjuk a hozzáféréseket a fához (annak ágaihoz), és ezek érvényesek lesznek a fa levelein is. Alapállapotban mindenhez megtagadjuk a hozzáférést. Ahogy haladsz a fán lefelé, felkapkodod az engedélyeket és alkalmazod őket. Az utolsó engedély (ami az ACO-ra vonatkozik) az, amit megtartasz végül. Egyszóval a következő jogosultságokat aggathatja Gandalf az ARO fánkra:
A Gyűrű Szövetsége: (hozzáférés mindenkinek mindenhez megtagadva) Harcosok (hozzáférés megengedve a Fegyverekhez, Sörhöz, Elf napiadaghoz, Füstölt húshoz ) Aragorn Legolas Gimli Varázslók (hozzáférés megengedve a Füstölt húshoz, Diplomáciához, és a Sörhöz) Gandalf Hobbitok (hozzáférés megengedve a Sörhöz) Frodo Bilbo Merry Pippin Vendégek (hozzáférés megengedve a Füstölt húshoz) Gollum
A Gyűrű Szövetsége: (hozzáférés mindenkinek mindenhez megtagadva)Harcosok (hozzáférés megengedve a Fegyverekhez, Sörhöz, Elf napiadaghoz, Füstölt húshoz )AragornLegolasGimliVarázslók (hozzáférés megengedve a Füstölt húshoz, Diplomáciához, és a Sörhöz)GandalfHobbitok (hozzáférés megengedve a Sörhöz)FrodoBilboMerryPippinVendégek (hozzáférés megengedve a Füstölt húshoz)Gollum
Ha az ACL segÃtségével meg szeretnénk nézni, hogy Pippin hozzáférhet-e a sörhöz, elÅ‘ször is megnéznénk a fában a hozzá vezetÅ‘ utat, ami: Szövetség -> Hobbitok -> Pippin. Ezek után megnézzük a különféle jogosultságokat, amik ezekben a pontokban találhatóak, és a Pippinhez és a sörhöz leginkább meghatározott használjuk. Tehát:
- Szövetség = Sör megtagadva (mivel mindenkinek minden meg van tagadva...)
- Hobbitok = Sör megengedve
- Pippin = ? Nincs semmi külön sör-specifikus megadva rá, szóval marad megengedve
- Végeredmény: Engedjük a sört Pippin-nek.
A fa azonban lehetÅ‘seget ad nekünk arra is, hogy sokkal finomabb szinten állÃtsuk a jogosultságokat - miközben végig megtartjuk a lehetÅ‘séget, hogy masszÃv változtatásokat hajtsunk végre. Például:
A Gyűrű Szövetsége: (hozzáférés mindenkinek mindenhez megtagadva) Harcosok (hozzáférés megengedve a Fegyverekhez, Sörhöz, Elf napiadaghoz, Füstölt húshoz ) Aragorn (hozzáférés megengedve a Diplomáciához) Legolas Gimli Varázslók (hozzáférés megengedve a Füstölt húshoz, Diplomáciához, és a Sörhöz) Gandalf Hobbitok (hozzáférés megengedve a Sörhöz) Frodo (hozzáférés megengedve a Gyűrűhöz) Bilbo Merry (hozzáférés megtagadva a Sörhöz) Pippin (hozzáférés megengedve a Diplomáciához) Vendégek (hozzáférés megengedve a Füstölt húshoz) Gollum
A Gyűrű Szövetsége: (hozzáférés mindenkinek mindenhez megtagadva)Harcosok (hozzáférés megengedve a Fegyverekhez, Sörhöz, Elf napiadaghoz, Füstölt húshoz )Aragorn (hozzáférés megengedve a Diplomáciához)LegolasGimliVarázslók (hozzáférés megengedve a Füstölt húshoz, Diplomáciához, és a Sörhöz)GandalfHobbitok (hozzáférés megengedve a Sörhöz)Frodo (hozzáférés megengedve a Gyűrűhöz)BilboMerry (hozzáférés megtagadva a Sörhöz)Pippin (hozzáférés megengedve a Diplomáciához)Vendégek (hozzáférés megengedve a Füstölt húshoz)Gollum
Láthatod, hogy az Aragorn ARO megtartja az összes jogosultságát ami a többi Harcosnak is van, de ezen kÃvül még külön egyedi módosÃtásokat hajthatsz végre, ha szükséges. A jogosultságok alapállapotban meg vannak tagadva, és csak a fán lefelé haladva változhatnak. Ahhoz, hogy lássuk, Merry elérheti-e a Sört, megnézzük, milyen úton lehet elérni Å‘t: Szövetség -> Hobbitok -> Merry, és lefelé haladva minden sörrel kapcsolatos infót megtartunk útközben:
- Szövetség = Sör megtagadva (mivel mindenkinek minden meg van tagadva...)
- Hobbitok = Sör megengedve
- Merry = Sör megtagadva
- Végeredmény: Nem engedjük a sört Pippin-nek.
Jogosultságok megadása: A Cake INI-alapú ACL-je
A Cake elsÅ‘ ACL implementációja ini fájl alapú volt. Bár hasznos és megbÃzható, ennek ellenére azt javasoljuk, inkább az adatbázis alapú ACL-t használd. Leginkább azért, mert a program futása közben tudsz újabb ACO-kat és ARO-kat hozzáadni. Az ini fájlos megoldást egyszerű alkalmazásokhoz szántuk - illetve azoknak az emberkéknek, akik valami miatt nem használnak adatbázist. Az ARO/ACO jogosultságok az /app/config/acl.ini.php -ban vannak megadva. A definiálás módja is ennek a fájlnak az elején található:
; acl.ini.php - Cake ACL Configuration ; --------------------------------------------------------------------- ; Ebben a file-ban definiáld a jogosultságokat. ; aco = access control object (valami az alkalmazásban) ; aro = access request object (bármi, ami hozzáférést kér) ; ; Felhasználó rekordok hozzáadása: ; ; [uid] ; groups = group1, group2, group3 ; allow = aco1, aco2, aco3 ; deny = aco4, aco5, aco6 ; ; Csoport (group) rekordok hasonlóképp: ; ; [gid] ; allow = aco1, aco2, aco3 ; deny = aco4, aco5, aco6 ; ; Az allow, deny és a groups részek mind opcionálisak. ; MEGJEGYZéS: A csoportok nevei sosem egyezhetnek meg egy felhasználó nevével sem!
; acl.ini.php - Cake ACL Configuration; ---------------------------------------------------------------------; Ebben a file-ban definiáld a jogosultságokat.; aco = access control object (valami az alkalmazásban); aro = access request object (bármi, ami hozzáférést kér);; Felhasználó rekordok hozzáadása:;; [uid]; groups = group1, group2, group3; allow = aco1, aco2, aco3; deny = aco4, aco5, aco6;; Csoport (group) rekordok hasonlóképp:;; [gid]; allow = aco1, aco2, aco3; deny = aco4, aco5, aco6;; Az allow, deny és a groups részek mind opcionálisak.; MEGJEGYZéS: A csoportok nevei sosem egyezhetnek meg egy felhasználó nevével sem!
Az ini fájl segÃtségével megadhatsz felhasználókat (ARO-k), csoportokat, amikhez tartoznak, illetve a saját egyedi jogosultságaikat. Szintén megadhatsz csoportokat is a saját külön jogosultságaikkal. Ha szeretnéd megtudni, hogyan használhatod a Cake ACL komponensét a jogosultságok ellenÅ‘rzésére - ini fájllal - nézd meg a 11.4-es részt.
Jogosultságok megadása: A Cake adatbázis alapú ACL-je
Hogyan kezdjük
Alapállapotban a jogosultsági rendszer adatbázis alapú. Ez a modul (nevezzük dbACL-nek) néhány központi modellbÅ‘l és egy parancssori szkriptbÅ‘l áll. A modelleket a Cake az ACL csomópontok adatbázisba mentésére és olvasására használja. A parancssori szkript segÃt az elindulásban, illetve használhatod az ACL fa manipulálására is. ElÅ‘ször is meg kell nézned, hogy az /app/config/database.php fájl létezik, és jól be van állÃtva. Egy új Cake telepÃtésnél a legegyszerűbben egy böngészÅ‘ben az install könyvtárat kinyitva láthatod ezt. A lap tetejénél - ha mindent jól csináltál - az alábbi üzeneteket kell látnod: "Your database configuration file is present." és "Cake is able to connect to the database.". Nézd meg a 4.1-es részt az adatbázis beállÃtásával kapcsolatos további részletekért. Ezután az ACL parancssori szkriptet használva felkészÃted az adatbázist a jogosultsági információk tárolására. Ezt a /cake/scripts/acl.php file segÃtségével teheted meg, az alábbi módon:
Az adatbázis inicializálása az acl.php -val
$ php acl.php initdb Initializing Database... Creating access control objects table (acos)... Creating access request objects table (acos)... Creating relationships table (aros_acos)... Done.
$ php acl.php initdbInitializing Database...Creating access control objects table (acos)...Creating access request objects table (acos)...Creating relationships table (aros_acos)...Done.
Itt az adatbázisban már látnod kell az új táblákat. Ha igazán kÃváncsi vagy, hogy tárolja a fastruktúra adatait a Cake, olvass utána a "módosÃtott fabejárás adatbázisban cÃmszó" alatt az irodalomban. Alapjában a csomópontokat, és azok helyét a fában tároljuk. Az acos és aros táblák tárolják a hozzájuk tartozó csomópontokat, az aros_acos tábla pedig összekapcsolja az ARO-kat azokkal az ACO-kkal, amiket elérhetnek.
Most már létre tudsz hozni ARO és ACO fákat.
ARO-k (Hozzáférést Kérő Objektum) és ACO-k (Hozzáférést Kontrolláló Objektum) létrehozása
Kétféle módon lehet ACO/ARO-kra hivatkozni. Egyrészt lehet egy numerikus értékkel, ami általában a tábla elsődleges kulcsa (primary key), amihez tartoznak. A másik egy tetszőleges sztring alias, amit hozzá lehet rendelni ehhez a számhoz. Ezt a két hivatkozási módot egyszerre is lehet használni.
Új ARO-t az Aro Cake modell megfelelÅ‘ metódusait hÃvva hozahtunk létre. Az Aro osztály create() metódusa három paramétert vár: $link_id, $parent_id, és $alias. Ez létrehoz egy új ACL objektumot a parent_id által megadott szülÅ‘ alatt, vagy Å‘ maga lesz a kiinduló csomópont, ha a parent_id értéke null. A link_id-val összekapcsolhatsz egy tetszÅ‘leges felhasználói objektumot az ACL struktúrával. Az alias-al pedig elérheted ezt egy sztringgel.
MielÅ‘tt neki tudnánk állni ACO-k és ARO-k gyártásának, be kell tölteni ezeket az osztályokat. Legkönnyebben a vezérlÅ‘ben behÃvva (a $components tömbben) a Cake ACL komponensét tudjuk mindezt megtenni.
var $components = array('Acl'); var $components = array('Acl');
Most, hogy ezzel is megvagyunk, lássunk egy példát, hogy néz ez ki a gyakorlatban. Az alábbi kódot a vezérlő egy eseményébe helyezhetjük:
$aro = new Aro();
// Először is gyártsunk pár ARO-t
// Ezeknek most még nincs szülője.
$aro->create( 1, null, 'Bob Marley' );
$aro->create( 2, null, 'Jimi Hendrix');
$aro->create( 3, null, 'George Washington');
$aro->create( 4, null, 'Abraham Lincoln');
// Most már csoportokba rendezhetjük a felhasználókat
// figyeld meg, hogy a csoportok ID-je 0, Ãgy ezek
// direkt sosem hivatkozhatnak egy felhasználóra
$aro->create(0, null, 'Presidents');
$aro->create(0, null, 'Artists');
// Most kapcsoljuk össze az ARO-kat a megfelelő csoporttal
$aro->setParent('Presidents', 'George Washington');
$aro->setParent('Presidents', 'Abraham Lincoln');
$aro->setParent('Artists', 'Jimi Hendrix');
$aro->setParent('Artists', 'Bob Marley');
// Röviden Ãgy készÃtünk egy ARO-t:
$aro = new Aro();
$aro->create($user_id, $parent_id, $alias);
$aro = new Aro();// ElÅ‘ször is gyártsunk pár ARO-t// Ezeknek most még nincs szülÅ‘je.$aro->create( 1, null, 'Bob Marley' );$aro->create( 2, null, 'Jimi Hendrix');$aro->create( 3, null, 'George Washington');$aro->create( 4, null, 'Abraham Lincoln');// Most már csoportokba rendezhetjük a felhasználókat// figyeld meg, hogy a csoportok ID-je 0, Ãgy ezek// direkt sosem hivatkozhatnak egy felhasználóra$aro->create(0, null, 'Presidents');$aro->create(0, null, 'Artists');// Most kapcsoljuk össze az ARO-kat a megfelelÅ‘ csoporttal$aro->setParent('Presidents', 'George Washington');$aro->setParent('Presidents', 'Abraham Lincoln');$aro->setParent('Artists', 'Jimi Hendrix');$aro->setParent('Artists', 'Bob Marley');// Röviden Ãgy készÃtünk egy ARO-t:$aro = new Aro();$aro->create($user_id, $parent_id, $alias);
ARO-kat a parancssorból is lehet készÃteni:
$acl.php create aro <link_id> <szülő_id> <alias>.
$acl.php create aro <link_id> <szülő_id> <alias>.
Az ACO-k hasonlóképp készülnek:
<div style="font-family: monospace;"> $aco = new Aco(); // KészÃtsünk néhány ACO-t $aco->create(1, null, 'Electric Guitar'); $aco->create(2, null, 'United States Army'); $aco->create(3, null, 'Fans'); // csoportokat is lehet készÃteni, mint az ARO-knál // a setParent()-el, de most ezt kihagyjuk // Szóval: $aco = new Aco(); $aco->create($id, $parent, $alias);
<div style="font-family: monospace;">$aco = new Aco();// KészÃtsünk néhány ACO-t$aco->create(1, null, 'Electric Guitar');$aco->create(2, null, 'United States Army');$aco->create(3, null, 'Fans');// csoportokat is lehet készÃteni, mint az ARO-knál// a setParent()-el, de most ezt kihagyjuk// Szóval:$aco = new Aco();$aco->create($id, $parent, $alias);
Az ehhez tartozó parancssor:
$acl.php create aco <link_id> <szülő_id> <alias>.
$acl.php create aco <link_id> <szülő_id> <alias>.
Jogosultságok hozzárendelése
Miután megvannak az ACO és ARO-ink, végre beállÃthatjuk a jogosultságokat a két csoport között. Ezt a Cake Acl komponensével tesszük. A példa:
// Először is a vezérlőben hozzá kell
// férnünk a Cake ACL komponenséhez:
class SomethingsController extends AppController
{
// Ezt lehet hogy inkább az AppController-be kellene rakni,
// de itt is jól működik.
var $components = array('Acl');
// Emlékezz: az ACL mindig mindent megtagad,
// amiről nincs infója. Ha bármiféle ellenőrzés
// lenne most, a hozzáférés meg lenne tagadva.
// Engedjük most meg egy ARO-nak a hozzáférést egy ACO-hoz.
function someAction()
{
//ENGEDéLYEZéS
// Ãgy adunk egy ARO-nak teljes hozzáférést egy ACO-hoz:
$this->Acl->allow('Jimi Hendrix', 'Electric Guitar');
$this->Acl->allow('Bob Marley', 'Electric Guitar');
// Ugyanezt megtehetjük csoportokkal is...
$this->Acl->Allow('Presidents', 'United States Army');
// Az allow() függvénynek van egy harmadik, $esemeny paramétere.
// Ennek segÃtségével részbeni hozzáférést is megadhatsz.
// $esemeny értéke lehet: create, read, update, delete.
// Ha $esemeny nincs megadva, teljes hozzáférése lesz.
$this->Acl->allow('George Washington', 'Electric Guitar', 'read');
$this->Acl->allow('Abraham Lincoln', 'Electric Guitar', 'read');
//TILTáS
// Hasonló módon... :
// Miután lejárt a mandátuma...
$this->Acl->deny('Abraham Lincoln', 'United States Army');
}
}
// ElÅ‘ször is a vezérlÅ‘ben hozzá kell// férnünk a Cake ACL komponenséhez:class SomethingsController extends AppController{// Ezt lehet hogy inkább az AppController-be kellene rakni,// de itt is jól működik.var $components = array('Acl');// Emlékezz: az ACL mindig mindent megtagad,// amirÅ‘l nincs infója. Ha bármiféle ellenÅ‘rzés// lenne most, a hozzáférés meg lenne tagadva.// Engedjük most meg egy ARO-nak a hozzáférést egy ACO-hoz.function someAction(){//ENGEDéLYEZéS// Ãgy adunk egy ARO-nak teljes hozzáférést egy ACO-hoz:$this->Acl->allow('Jimi Hendrix', 'Electric Guitar');$this->Acl->allow('Bob Marley', 'Electric Guitar');// Ugyanezt megtehetjük csoportokkal is...$this->Acl->Allow('Presidents', 'United States Army');// Az allow() függvénynek van egy harmadik, $esemeny paramétere.// Ennek segÃtségével részbeni hozzáférést is megadhatsz.// $esemeny értéke lehet: create, read, update, delete.// Ha $esemeny nincs megadva, teljes hozzáférése lesz.$this->Acl->allow('George Washington', 'Electric Guitar', 'read');$this->Acl->allow('Abraham Lincoln', 'Electric Guitar', 'read');//TILTáS// Hasonló módon... :// Miután lejárt a mandátuma...$this->Acl->deny('Abraham Lincoln', 'United States Army');}}
Ennek a vezérlőnek nem sok haszna van, talán csak annyi, hogy megértsd, hogyan működik a folyamat. Az Acl-t a saját felhasználó-kezelő komponenseddel együtt kezelve lehet a legjobb eredményeket elérni. Mihelyst egy felhasználó létrejött, az ARO-ját a fa megfelelő ágára lehet helyezni, a további jogosultságokat pedig (ha szükséges) hozzárendelni a megfelelő ACO-khoz.
A jogosultságokat a Cake parancssori szkriptjeivel is be lehet állÃtani. A szintaktika hasonló a modell függvényeihez, és meg lehet nézni a $php acl.php help -et futtatva.
4. rész
Jogosultságok ellenőrzése: Az ACL komponens
A jogosultságok ellenÅ‘rzése a lekgönnyebb része a Cake féle ACL-nek. Az Acl komponensnek csak egyetlen metódusát kell meghÃvni, a check()-et. Jó módja az ACL programunkba való beépÃtésének, ha az AppController-ünkbe rakunk egy eseményt, ami végrehajtja az ellenÅ‘rzést. Ha iderakjuk, a programunk bármely részébÅ‘l elérhetjük ezt a részt. Egy példa:
class AppController extends Controller
{
// Beszerezzük a komponensünket
var $components = array('Acl');
function checkAccess($aco)
{
// Ellenőrizzük a hozzáférést
$access = $this->Acl->check($this->Session->read('user_alias'), $aco, $action = "*");
// megtagadva
if ($access === false)
{
echo "na húzzá!";
exit;
}
// engedélyezve
else
{
echo "csá tesó!";
exit;
}
}
}
class AppController extends Controller{// Beszerezzük a komponensünketvar $components = array('Acl');function checkAccess($aco){// Ellenőrizzük a hozzáférést$access = $this->Acl->check($this->Session->read('user_alias'), $aco, $action = "*");// megtagadvaif ($access === false){echo "na húzzá!";exit;}// engedélyezveelse{echo "csá tesó!";exit;}}}
Az Acl komponenst az AppController-ben elérhetÅ‘vé téve az Acl használható lesz alkalmazásunk bármelyik vezérlÅ‘jében. Ãme az alap forma:
$this->Acl->Check($aro, $aco, $action = '*');
$this->Acl->Check($aro, $aco, $action = '*');
