Zend_Acl (Àº)´Â, °æ·®À¸·Î À¯¿¬ÇÑ ¾×¼¼½º Á¦¾î ¸®½ºÆ® (ACL) ±â´É°ú ±ÇÇÑ °ü¸® ±â´ÉÀ» Á¦°øÇÕ´Ï´Ù.¾îÇø®ÄÉÀ̼ǿ¡¼´Â ÀϹÝÀûÀ¸·Î, º¸È£µÈ ¿ÀºêÁ§Æ®¿¡ÀÇ ¾×¼¼½º¸¦ Á¦¾îÇϱâ À§Çؼ ÀÌ·¯ÇÑ ±â´ÉÀ» »ç¿ëÇÕ´Ï´Ù.
ÀÌ ¹®¼¿¡ ´ëÇϰí,
ÀÚ¿ø (Resource) (ÀÌ)¶õ, ¾×¼¼½º Á¦¾îÀÇ ´ë»óÀÌ µÇ´Â ¿ÀºêÁ§Æ®ÀÔ´Ï´Ù.
·Ñ (Role) (ÀÌ)¶õ, ÀÚ¿ø¿¡ ´ëÇØ¼ÀÇ ¾×¼¼½º¸¦ ¿ä±¸ÇÏ´Â ¿ÀºêÁ§Æ®ÀÔ´Ï´Ù.
°£´ÜÇÏ°Ô ¸»Çϸé,·ÑÀÌ ÀÚ¿ø¿¡ ´ëÇØ¼ÀÇ ¾×¼¼½º¸¦ ¿ä±¸ÇÑ´Ù ±×·¸´Ù°í ÇÏ´Â °ÍÀÔ´Ï´Ù.¿¹¸¦ µé¾î, ¾î´À »ç¶÷ÀÌ ÀÚµ¿Â÷¸¦ ÀÌ¿ëÇÏ°í ½Í´Ù°í »ý°¢Çϰí ÀÖ´Ù°í ÇսôÙ. ÀÌ °æ¿ì, ÀÚµ¿Â÷¸¦ ´©°¡ ÀÌ¿ëÇÒ ¼ö ÀÖ´ÂÁö°¡ °ü¸®µÇ°í ÀÖ´Ù°í ÇÏ¸é ¡¸ÀÖ´Â »ç¶÷¡¹ÀÌ ·Ñ·Î ¡¸ÀÚµ¿Â÷¡¹°¡ ÀÚ¿øÀÌ µË´Ï´Ù.
¾×¼¼½º Á¦¾î ¸®½ºÆ® (ACL) (À¸)·ÎÀÇ ¼³Á¤¿¡ ÀÇÇØ¼, ¾îÇø®ÄÉÀ̼ÇÀº ¿ä±¸ÇØ ¿Â ¿ÀºêÁ§Æ® (·Ñ) ÇÏÁö¸¸ Á¦ÇÑµÈ ¿ÀºêÁ§Æ® (ÀÚ¿ø) ¿¡ÀÇ ¾×¼¼½º¸¦ ÀÎÁ¤¹Þ°í ÀÖ´ÂÁö ¾î¶²Áö¸¦ Á¦¾îÇÕ´Ï´Ù.
Zend_Acl ±×·³, ÀÚ¿øÀ» ÀÛ¼ºÇÏ´Â °ÍÀº °£´ÜÇÕ´Ï´Ù.Zend_Acl ÀÇ
Zend_Acl_Resource_Interface
¿¡,
°³¹ßÀÚ°¡ ÀÚ¿øÀ» ÀÛ¼ºÇÏ´Â °Í µ½´Â ±â´ÉÀÌ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù.
ÀÚ¿ø Ŭ·¡½º´Â, ´ÜÁö ÀÌ ÀÎÅÍÆäÀ̽º¸¦ ½ÇÀåÇÏ´Â °Í¸¸À¸·Î ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÀÌ ÀÎÅÍÆäÀ̽º¿¡ Æ÷ÇԵǴ ¸Þ¼Òµå´Â Çϳª¸¸À¸·Î, ±×°ÍÀº
getResourceId()
ÀÔ´Ï´Ù.ÀÌ ¸Þ¼Òµå¿¡ ÀÇÇØ,
Zend_Acl (Àº)´Â ±× ¿ÀºêÁ§Æ®°¡ ÀÚ¿øÀÌ´Ù°í ÆÇ´ÜÇÕ´Ï´Ù.°Ô´Ù°¡
±âº»ÀûÀÎ ÀÚ¿øÀÇ ½ÇÀåÀ» Æ÷ÇÔÇÑ´Ù Zend_Acl_Resource
ÇÏÁö¸¸ Zend_Acl ¿¡ ÀÎŬ·çµå µÇ°í ÀÖ½À´Ï´Ù.
°³¹ßÀÚ´Â, ÇÊ¿äÇÑ ºÎºÐ¸¸ÅÀ» È®ÀåÇÏ´Â °ÍÀ¸·Î ÀÚ¿øÀ» ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.
Zend_Acl (Àº)´Â, Æ®¸® ±¸Á¶¸¦ Á¦°øÇϰí ÀÖ½À´Ï´Ù.À̰ÍÀ» ÀÌ¿ëÇØ º¹¼öÀÇ ÀÚ¿ø ("¾×¼¼½º Á¦¾îµÇ°í ÀÖ´Â ¿¡¸®¾î") (À»)¸¦ Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÚ¿øÀº ÀÌ¿Í °°ÀÌ Æ®¸® ±¸Á¶·Î °ü¸®µÇ¹Ç·Î, Àü¹ÝÀûÀÎ °Í (·çÆ®¿¡ °¡±î¿î Æí) (À¸)·ÎºÎÅÍ Æ¯¼öÇÑ °Í (¸»´Ü¿¡ °¡±î¿î Æí) ±îÁö¸¦ Ãë±ÞÇÒ ¼ö ÀÖ½À´Ï´Ù. ƯÁ¤ÀÇ ÀÚ¿ø¿¡ ´ëÇØ¼ ¹®ÀǸ¦ ½Ç½ÃÇϸé, ÀÚ¿øÀÇ °èÃþÀ» ´õµë¾î ÀÚµ¿ÀûÀ¸·Î »óÀ§ °èÃþ¿¡ÀÇ ¹®Àǵµ ÇàÇØÁý´Ï´Ù. À̰Ϳ¡ ÀÇÇØ, ±ÔÄ¢À» °èÃþÈÇØ °ü¸®ÇÏ´Â °Í ½ÇÇöµÉ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ¾î´À µµ½ÃÀÇ ¸ðµç °Ç¹°¿¡ Àû¿ëµÇ´Â µðÆúÆ®ÀÇ ±ÔÄ¢ÀÌ ÀÖ´Â °æ¿ì¿¡, ±×°ÍÀ» °¢ °Ç¹°¿¡ Àû¿ëÇÏ´Â ´ë½Å¿¡ µµ½Ã¿¡ ´ëÇØ¼ Àû¿ëÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. ¾È¿¡´Â ÀÌ ±ÔÄ¢ÀÇ ¿¹¿Ü°¡ µÇ´Â °Ç¹°µµ ÀÖÀ»Áöµµ ¸ð¸¨´Ï´Ù. Zend_Acl ±×·³, ÀÌ·¯ÇÑ »óȲµµ °£´ÜÇÏ°Ô Ã³¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¿ÜÀûÀÎ ±ÔÄ¢À» Àû¿ëÇÏ´Â °Ç¹°¿¡ ´ëÇØ¼´Â, °Ç¹°¿¡ ´ëÇØ¼ Á÷Á¢ ±ÔÄ¢À» Á¤ÀÇÇϸé ÁÁ½À´Ï´Ù. ÀÚ¿øÀº, ´ÜÀÏÀÇ ÀÚ¿ø ¹Û¿¡ °è½ÂÇÒ ¼ö ¾ø½À´Ï´Ù. ±×¸®°í ±× °è½Â¿øÀÇ ÀÚ¿øÀÌ ¶Ç ´Ù¸¥ Ä£ÀÚ¿øÀ» °è½ÂÇØ¡¦¡¦ (¿Í)°ú °°Àº Á¤µµ°¡ µË´Ï´Ù.
Zend_Acl (Àº)´Â, ÀÚ¿ø¿¡ ´ëÇÑ ±ÇÇÑ ("create","read","update","delete" µî) µµ ¼Æ÷Æ®Çϰí ÀÖ¾î, ¸ðµç ±ÇÇÑ È¤Àº ÀϺÎÀÇ ±ÇÇÑÀ¸·Î ¿µÇâÀ» ¹ÌÄ¡´Â ±ÔÄ¢À», ÀÚ¿ø¿¡ ´ëÇØ¼ ÇÒ´çÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÀÚ¿ø°ú °°ÀÌ, ·ÑÀ» ÀÛ¼ºÇÏ´Â °Íµµ °£´ÜÇÕ´Ï´Ù.Zend_Acl ÀÇ
Zend_Acl_Role_Interface
¿¡,
°³¹ßÀÚ°¡ ·ÑÀ» ÀÛ¼ºÇÏ´Â °Í µ½´Â ±â´ÉÀÌ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù.
·Ñ Ŭ·¡½º´Â, ´ÜÁö ÀÌ ÀÎÅÍÆäÀ̽º¸¦ ½ÇÀåÇÏ´Â °Í¸¸À¸·Î ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÀÌ ÀÎÅÍÆäÀ̽º¿¡ Æ÷ÇԵǴ ¸Þ¼Òµå´Â Çϳª¸¸À¸·Î, ±×°ÍÀº
getRoleId()
ÀÔ´Ï´Ù.ÀÌ ¸Þ¼Òµå¿¡ ÀÇÇØ,
Zend_Acl (Àº)´Â ±× ¿ÀºêÁ§Æ®°¡ ·ÑÀÌ´Ù°í ÆÇ´ÜÇÕ´Ï´Ù.°Ô´Ù°¡
±âº»ÀûÀÎ ·ÑÀÇ ½ÇÀåÀ» Æ÷ÇÔÇÑ´Ù Zend_Acl_Role
ÇÏÁö¸¸ Zend_Acl ¿¡ ÀÎŬ·çµå µÇ°í ÀÖ½À´Ï´Ù.
°³¹ßÀÚ´Â, ÇÊ¿äÇÑ ºÎºÐ¸¸ÅÀ» È®ÀåÇÏ´Â °ÍÀ¸·Î ÀÚ¿øÀ» ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.
Zend_Acl ±×·³, ¾î´À ·ÑÀº ´Ù¸¥ º¹¼öÀÇ ·ÑÀ» °è½ÂÇÒ ¼ö ÀÖ½À´Ï´Ù. À̰ÍÀº, °¢°¢ÀÇ ·ÑÀÇ ±ÔÄ¢À» °è½ÂÇÏ´Â °ÍÀ» ¼Æ÷Æ®Çϱâ À§ÇÑÀÇ °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î,"sally" (¿Í)°ú °°Àº À¯Àú ·ÑÀº,"editor" ÇÑÆí "administrator" (¿Í)°ú °°ÀÌ º¹¼öÀÇ Ä£·Ñ¿¡ ¼ÓÇÏ´Â Àϵµ ÀÖÀ» ¼ö ÀÖ°ÚÁö¿ä. ÀÌ °æ¿ì, °³¹ßÀÚ´Â "editor" ¹× "administrator" ¿¡ °¢°¢ º°·Î ±ÔÄ¢À» Á¤ÀÇÇÕ´Ï´Ù. ±×¸®°í "sally" ÇÏÁö¸¸ ±× ¾çÂÊ ¸ðµÎ¸¦ °è½ÂÇϱâ·Î ÇϰڽÀ´Ï´Ù. "sally" ¿¡ ±ÔÄ¢À» Á÷Á¢ Á¤ÀÇÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù.
º¹¼öÀÇ ·Ñ·ÎºÎÅÍÀÇ °è½ÂÀº ¸Å¿ì Æí¸®ÇÕ´Ï´Ù¸¸, ´ÙÁß »ó¼ÓÀº º¹ÀâÇÑ ¹®Á¦¸¦ ÀÏÀ¸Å°±âµµ ÇÕ´Ï´Ù. ´ÙÀ½ÀÇ ¿¹´Â, ¾Ö¸ÅÇÑ Á¶°ÇÀÌ µÇ¾úÀ» ¶§¿¡ Zend_Acl ÇÏÁö¸¸ ±×°ÍÀ» ¾î¶»°Ô ÇØ°áÇÏ´ÂÁö¸¦ ³ªÅ¸³»´Â °ÍÀÔ´Ï´Ù.
·Ê 2.1. ·ÑÀÇ ´ÙÁß »ó¼Ó
ÀÌÇÏÀÇ Äڵ忡¼´Â, ±âº»ÀÌ µÇ´Â ¼¼ °³ÀÇ ·Ñ "guest
","member
"
¹× "admin
" (À»)¸¦ Á¤ÀÇÇϰí ÀÖ½À´Ï´Ù.´Ù¸¥ ·ÑÀº À̰͵éÀ» °è½ÂÇÏ°Ô µË´Ï´Ù.
´ÙÀ½¿¡,"someUser
" ±×·¸´Ù°í ÇÏ´Â ·ÑÀ» ÀÛ¼ºÇØ ÀÌ·¯ÇÑ ¼¼ °³ÀÇ ·ÑÀ» °è½ÂÇÕ´Ï´Ù.
ÀÌ·¯ÇÑ ·ÑÀÌ ¹è¿ $parents
¿¡ ³ªÅ¸³ª´Â ¼ø¼°¡ Áß¿äÇØÁý´Ï´Ù.
¹®ÀÇóÀÇ ·Ñ (¿©±â¿¡¼´Â "someUser
" ¿¡ ¾×¼¼½º ±ÔÄ¢ÀÌ Á¤ÀǵǾî ÀÖÁö ¾ÊÁö¸¸
±× °è½Â¿ø (¿©±â¿¡¼´Â "guest
","member
" ¹× "admin
")
¿¡´Â Á¤Àǵǰí ÀÖ´Ù°í ÇÏ´Â °æ¿ì,Zend_Acl (Àº)´Â ±× ÂÊÀ» °Ë»öÇÕ´Ï´Ù.
<?php
require_once 'Zend/Acl.php';
$acl = new Zend_Acl();
require_once 'Zend/Acl/Role.php';
$acl->addRole(new Zend_Acl_Role('guest'))
->addRole(new Zend_Acl_Role('member'))
->addRole(new Zend_Acl_Role('admin'));
$parents = array('guest', 'member', 'admin');
$acl->addRole(new Zend_Acl_Role('someUser'), $parents);
require_once 'Zend/Acl/Resource.php';
$acl->add(new Zend_Acl_Resource('someResource'));
$acl->deny('guest', 'someResource');
$acl->allow('member', 'someResource');
echo $acl->isAllowed('someUser', 'someResource') ? 'allowed' : 'denied';
"someUser
" ·Ñ ¹×
"someResource
" ¿¡ ´ëÇÑ ±ÔÄ¢Àº Á¤ÀǵǾî ÀÖÁö ¾Ê±â ¶§¹®¿¡,
Zend_Acl (Àº)´Â, ±× ±ÔÄ¢ÀÌ "someUser
"
ÀÇ °è½Â¿ø·Ñ·Î Á¤Àǵǰí ÀÖ´Â °ÍÀ¸·Î¼ °Ë»öÇÕ´Ï´Ù.
¿ì¼± "admin
" ·ÑÀ» ã½À´Ï´Ù¸¸, ¿©±â¿¡¼´Â ¾×¼¼½º ±ÔÄ¢ÀÌ Á¤Àǵǰí ÀÖÁö ¾Ê½À´Ï´Ù.
´ÙÀ½¿¡ "member
" ·ÑÀ» ã¾Æ, ¿©±â¼ Zend_Acl ÇÏÁö¸¸ ±ÔÄ¢À» ¹ß°ßÇÕ´Ï´Ù.Áï
"member
" ÇÏ "someResource
" ¿¡ÀÇ ¾×¼¼½º°¡ Çã°¡µÇ°í ÀÖ´Â °ÍÀÔ´Ï´Ù.
±×·¯³ª, ¸¸ÀÏ Zend_Acl ÇÏÁö¸¸ ÇÑÃþ ´õ ´Ù¸¥ ºÎ¸ð¿¡ ´ëÇØ¼µµ ±ÔÄ¢ÀÇ °Ë»öÀ» °è¼ÓÇß´Ù°í Çϸé,
"guest
" ÇÏ "someResource
" ¿¡ÀÇ ¾×¼¼½º°¡ °ÅºÎµÇ°í ÀÖ´Â °Í¿¡ ´«Ä¡Ã¤°ÚÁö¿ä.
À̰ÍÀº ¹®Á¦°¡ µË´Ï´Ù.±×·¸´Ù°í ÇÏ´Â °Íµµ,"someUser
" ÇÏ
"someResource
" ¿¡ÀÇ ¾×¼¼½º°¡ Çã°¡µÇ°í ÀÖ´Â °Í°ú µ¿½Ã¿¡ °ÅºÎµÇ°í ÀÖ´Â °ÍÀ¸·Î,
°¢°¢ ´Ù¸¥ Ä£·Ñ·ÎºÎÅÍ ÃëµæÇÑ ±ÔÄ¢ÀÌ Ãæµ¹ÇÏ°Ô µÇ±â ¶§¹®ÀÔ´Ï´Ù.
Zend_Acl ±×·³, ÀÌ·¯ÇÑ Ãæµ¹ÀÇ °¡´É¼ºÀ» ÇØ°áÇϱâ À§Çؼ,
¹Ù·Î ¿·¿¡ °è½ÂµÈ ·ÑÀÇ ¿ì¼±µµ°¡ ³ô¾ÆÁöµµ·Ï(µíÀÌ) Çϰí ÀÖ½À´Ï´Ù.
À̹ø °æ¿ì´Â,"member
" ÂÊÀÌ
"guest
" ·Ñº¸´Ù ¸ÕÀú Á¶»çÇÒ ¼ö ÀÖ¾î ¿¹ÀÇ ÄÚµåÀÇ Ãâ·ÂÀº
"allowed
" µË´Ï´Ù.
![]() |
ÁÖÀÇ |
---|---|
º¹¼öÀÇ ºÎ¸ð¸¦ ·Ñ·Î ÁöÁ¤ÇÏ´Â °æ¿ì´Â, ½ÂÀÎ Äõ¸®·ÎÀÇ ±ÔÄ¢ÀÇ °Ë»ö¼ø¼¸¦ ±â¾ïÇØ µÓ½Ã´Ù. ¸¶Áö¸·¿¡ ÁöÁ¤ÇÑ ºÎ¸ð°¡ ÃÖÃÊ·Î ´ë»óÀÌ µË´Ï´Ù. |
ACL (À»)¸¦ »ç¿ëÇϰí, ¹°¸®Àû ȤÀº °¡»óÀûÀÎ ¿ÀºêÁ§Æ®ÀÇ Æí¼ºÀ» ¼Ò¸Á ´ë·Î¿¡ Ç¥ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù.±×·¯³ª ¿©±â¿¡¼´Â, ¼³¸í¿ëÀ¸·Î¼ ±âº»ÀûÀÎ ÄÁÅÙÃ÷ °ü¸® ½Ã½ºÅÛ (CMS) ÀÇ ACL (À»)¸¦ »ý°¢ÇÕ´Ï´Ù. À̰ÍÀº, ´Ù¾çÇÑ ¿µ¿ª¿¡¼ º¹¼ö °èÃþÀÇ ±×·ìÀ» °ü¸®ÇÏ´Â °ÍÀÔ´Ï´Ù. »õ·Ó´Ù ACL ¿ÀºêÁ§Æ®¸¦ ÀÛ¼ºÇÏ·Á¸é , ¾Æ¹«°Íµµ ÆÄ¶ó¹ÌÅ͸¦ ÁöÁ¤ÇÏÁö ¾Ê°í ACL ÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇÕ´Ï´Ù.
<?php
require_once 'Zend/Acl.php';
$acl = new Zend_Acl();
![]() |
ÁÖÀÇ |
---|---|
°³¹ßÀÚ°¡ "allow" ±ÔÄ¢À» ÁöÁ¤ÇÏÁö ¾Ê´Â ÇÑ,Zend_Acl (Àº)´Â ¸ðµç ·ÑÀÇ ¸ðµç ÀÚ¿ø»óÀÇ ±ÇÇÑÀ¸·ÎºÎÅÍÀÇ ¾×¼¼½ºµµ °ÅºÎÇÕ´Ï´Ù. |
ÄÁÅÙÃ÷ °ü¸® ½Ã½ºÅÛ¿¡¼´Â, °ÅÀÇ ¸ðµç Àå¸é¿¡¼ ±ÇÇÑ °èÃþÀÇ °ü¸®°¡ ÇÊ¿äÇÕ´Ï´Ù. À̰Ϳ¡ ÀÇÇØ, À¯ÀúÀÇ ÆíÁý ±ÇÇÑÀ» °áÁ¤ÇÕ´Ï´Ù.¿¹¸¦ µé¾î 'Guest' ±×·ì¿¡ ´ëÇØ¼´Â µ¥¸ð¿ëÀ¸·Î ÇÑÁ¤ÇÑ ¾×¼¼½º±ÇÇѸ¸À» Çã°¡ÇØ, 'Staff' ±×·ìÀº Åë»óÀÇ Á¶ÀÛÀ» ÇÏ´Â ´ëºÎºÐÀÇ CMS À¯Àú¿ëÀ¸·Î ÀÛ¼ºÇØ, 'Editor' ±×·ì¿¡´Â ÄÁÅÙÃ÷ÀÇ °ø°³³ª ¸®ºä, º¸Á¸À̳ª »èÁ¦ÀÇ ±ÇÇÑÀ» ÁÖ¾î ¸¶Áö¸·¿¡ 'Administrator' (Àº)´Â, ±× ¿ÜÀÇ ¸ðµç ±×·ìÀÇ ±ÇÇÑ¿¡ °¡¼¼ÇØ ±â¹Ð Á¤º¸ÀÇ °ü¸®³ª À¯Àú °ü¸®, µ¥ÀÌÅÍÀÇ ¹é¾÷/export ±â´ÉÀ» Áشٰí ÇÑ °Íó·³ µË´Ï´Ù. ÀÌ·¯ÇÑ ±ÇÇÑÀ», ·Ñ ·¹Áö½ºÆ®¸®·Î ³ªÅ¸³¾ ¼ö ÀÖ½À´Ï´Ù. °¢ ±×·ìÀÇ ±ÇÇÑÀ» 'ºÎ¸ðÀÇ' ±×·ìÀ¸·ÎºÎÅÍ °è½Â½ÃÄÑ, ±× ±×·ì¿¡ °íÀ¯ÀÇ ±ÇÇÑÀ» Ãß°¡·Î Á¤ÀÇÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ±ÇÇÑÀ» Á¤¸®Çϸé, ´ÙÀ½°ú °°ÀÌ µË´Ï´Ù.
Ç¥ 2.1. »ùÇà CMS ¿ë¹«ÀÇ ¾×¼¼½º Á¦¾î
À̸§ | ±ÇÇÑ | °è½ÂÇÏ´Â ±ÇÇÑÀÇ °è½Â¿ø |
---|---|---|
Guest | View | ¾øÀ½ |
Staff | Edit, Submit, Revise | Guest |
Editor | Publish, Archive, Delete | Staff |
Administrator | (¸ðµç ¾×¼¼½º¸¦ Çã°¡) | ¾øÀ½ |
ÀÌ ¿¹¿¡¼´Â Zend_Acl_Role
(À»)¸¦ ÀÌ¿ëÇϰí ÀÖ½À´Ï´Ù¸¸,
Zend_Acl_Role_Interface
(À»)¸¦ ½ÇÀåÇϰí ÀÖ´Â ¿ÀºêÁ§Æ®¶ó¸é ¹¹µçÁö »ç¿ë °¡´ÉÇÕ´Ï´Ù.
ÀÌ·¯ÇÑ ±×·ìÀ», ´ÙÀ½°ú °°ÀÌ ÇØ ·Ñ ·¹Áö½ºÆ®¸®¿¡ Ãß°¡ÇÕ´Ï´Ù.
<?php
require_once 'Zend/Acl.php';
$acl = new Zend_Acl();
// Zend_Acl_Role (À»)¸¦ »ç¿ëÇϰí, ±×·ìÀ» ·Ñ ·¹Áö½ºÆ®¸®¿¡ Ãß°¡ÇÕ´Ï´Ù
require_once 'Zend/Acl/Role.php';
// Guest (Àº)´Â ¾×¼¼½º Á¦¾î¸¦ °è½ÂÇÏÁö ¾Ê½À´Ï´Ù
$roleGuest = new Zend_Acl_Role('guest');
$acl->addRole($roleGuest);
// Staff ÇÏ guest ÀÇ ±ÇÇÑÀ» °è½ÂÇÕ´Ï´Ù
$acl->addRole(new Zend_Acl_Role('staff'), $roleGuest);
/* ȤÀº, À§ÀÇ ³»¿ëÀº ´ÙÀ½°ú °°ÀÌ ¾µ ¼öµµ ÀÖ½À´Ï´Ù
$acl->addRole(new Zend_Acl_Role('staff'), 'guest');
//*/
// Editor ÇÏ staff ÀÇ ±ÇÇÑÀ» °è½ÂÇÕ´Ï´Ù
$acl->addRole(new Zend_Acl_Role('editor'), 'staff');
// Administrator (Àº)´Â ¾×¼¼½º Á¦¾î¸¦ °è½ÂÇÏÁö ¾Ê½À´Ï´Ù
$acl->addRole(new Zend_Acl_Role('administrator'));
ACL ¿¡ ÀûÀýÇÑ ·ÑÀÌ Æ÷ÇÔµÈ »óŰ¡ µÇ¾ú½À´Ï´Ù.À̰ÍÀ¸·Î, ÀÚ¿ø¿¡ ´ëÇØ¼ ·ÑÀÌ ¾î¶»°Ô ¾×¼¼½º Çϴ°¡ ÇÏ´Â ±ÔÄ¢À» Á¤ÀÇÇÒ ¼ö ÀÖ´Â »óŰ¡ µÇ¾ú½À´Ï´Ù. ÀÌ ¿¹¿¡¼´Â ƯÁ¤ÀÇ ÀÚ¿øÀ» Á¤ÀÇÇϰí ÀÖÁö ¾Ê´Â °Í¿¡ ±âºÐ±Í´ìµµ ¾Ë·ÁÁöÁö ¾Ê½À´Ï´Ù. ÀÌ °æ¿ì, ±ÔÄ¢Àº ¸ðµç ÀÚ¿ø¿¡ ´ëÇØ¼ Àû¿ëµË´Ï´Ù. Zend_Acl (À»)¸¦ »ç¿ëÇϸé, Àü¹ÝÀûÀÎ °ÍÀ̵çÁö Ư¼öÇÑ °ÍÀ̵çÁö ±ÔÄ¢À» Àû¿ëÇÏ´Â °Í¸¸À¸·Î Á¤ÀÇÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. ÀÚ¿øÀ̳ª ·ÑÀº, ±× °è½Â¿øÀ¸·Î Á¤Àǵǰí ÀÖ´Â ±ÔÄ¢À» °è½ÂÇϱ⠶§¹®ÀÔ´Ï´Ù.
±× ¶§¹®¿¡, º¹ÀâÇÑ ±ÔÄ¢ÀÇ Æí¼ºÀ» ÃÖ¼ÒÇÑÀÇ ÄÚµå·Î Á¤ÀÇÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. À§¿¡¼ Á¤ÀÇÇÑ ±âº»ÀûÀÎ ±ÇÇÑÀ» Àû¿ëÇÏ·Á¸é , ´ÙÀ½°ú °°ÀÌ ÇÕ´Ï´Ù.
<?php
require_once 'Zend/Acl.php';
$acl = new Zend_Acl();
require_once 'Zend/Acl/Role.php';
$roleGuest = new Zend_Acl_Role('guest');
$acl->addRole($roleGuest);
$acl->addRole(new Zend_Acl_Role('staff'), $roleGuest);
$acl->addRole(new Zend_Acl_Role('editor'), 'staff');
$acl->addRole(new Zend_Acl_Role('administrator'));
// Guest (Àº)´Â, ÄÁÅÙÃ÷¸¦ ¿¶÷ÇÏ´Â Àϵµ¿¡°¡ °¡´ÉÇÕ´Ï´Ù
$acl->allow($roleGuest, null, 'view');
/* À§¿Í °°Àº ³»¿ëÀ», ÀÌ¿Í °°ÀÌ ¾µ ¼öµµ ÀÖ½À´Ï´Ù
$acl->allow('guest', null, 'view');
//*/
// Staff ÇÏ guest ÀÇ ±ÇÇÑÀ» ¸ðµÎ °è½ÂÇÑ µ¥´Ù°¡, ÇÑÃþ ´õ Ãß°¡ÀÇ ±ÇÇÑÀ» ÇÊ¿ä·Î ÇÕ´Ï´Ù
$acl->allow('staff', null, array('edit', 'submit', 'revise'));
// Editor (Àº)´Â,staff ÀÇ ±ÇÇÑ (view,edit,submit ¹× revise)
// (À»)¸¦ °è½ÂÇÑ µ¥´Ù°¡, ÇÑÃþ ´õ Ãß°¡ÀÇ ±ÇÇÑÀ» ÇÊ¿ä·Î ÇÕ´Ï´Ù
$acl->allow('editor', null, array('publish', 'archive', 'delete'));
// Administrator (Àº)´Â ¾Æ¹«°Íµµ °è½ÂÇÏÁö ¾Ê½À´Ï´Ù¸¸, ¸ðµç ±ÇÇÑÀÌ ÀÎÁ¤µÇ°í ÀÖ½À´Ï´Ù
$acl->allow('administrator');
ˤ˂ allow()
ÀÇ ÄÝ¿¡ ÀÖ¾î¼ÀÇ null
(Àº)´Â,
±ÔÄ¢À» ¸ðµç ÀÚ¿ø¿¡ ´ëÇØ¼ Àû¿ëÇÏ´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù.
À̰ÍÀ¸·Î, À¯¿¬ÇÑ ACL ÇÏÁö¸¸ ÀÛ¼ºÇÒ ¼ö ÀÖ¾ú½À´Ï´Ù.À̰Ϳ¡ ÀÇÇØ,
À¥ ¾îÇø®ÄÉÀ̼ÇÀÇ »ç¿ëÀÚ°¡,
¾î´À ±â´ÉÀ» »ç¿ëÇϱâ À§Çؼ ÇÊ¿äÇÑ ±ÇÇÑÀ» °¡Áö°í ÀÖÀ»±î¸¦ Á¶»çÇÒ ¼ö ÀÖ°Ô µÇ¾ú½À´Ï´Ù.
¹®ÀǸ¦ ½Ç½ÃÇÏ´Â °ÍÀº °£´ÜÇϰí, ´ÜÁö isAllowed()
¸Þ¼Òµå¸¦ »ç¿ëÇÒ »ÓÀÔ´Ï´Ù.
<?php
echo $acl->isAllowed('guest', null, 'view') ?
"allowed" : "denied"; // allowed µË´Ï´Ù
echo $acl->isAllowed('staff', null, 'publish') ?
"allowed" : "denied"; // denied µË´Ï´Ù
echo $acl->isAllowed('staff', null, 'revise') ?
"allowed" : "denied"; // allowed µË´Ï´Ù
echo $acl->isAllowed('editor', null, 'view') ?
"allowed" : "denied"; // guest (À¸)·ÎºÎÅÍ °è½ÂÇϰí ÀÖÀ¸¹Ç·Î allowed µË´Ï´Ù
echo $acl->isAllowed('editor', null, 'update') ?
"allowed" : "denied"; // 'update' ¿ë¹«ÀÇ ±ÔÄ¢ÀÌ ¾ø±â ¶§¹®¿¡ denied µË´Ï´Ù
echo $acl->isAllowed('administrator', null, 'view') ?
"allowed" : "denied"; // administrator (Àº)´Â ¸ðµç ±ÇÇÑÀÌ Çã°¡µÇ°í ÀÖÀ¸¹Ç·Î allowed µË´Ï´Ù
echo $acl->isAllowed('administrator') ?
"allowed" : "denied"; // administrator (Àº)´Â ¸ðµç ±ÇÇÑÀÌ Çã°¡µÇ°í ÀÖÀ¸¹Ç·Î allowed µË´Ï´Ù
echo $acl->isAllowed('administrator', null, 'update') ?
"allowed" : "denied"; // administrator (Àº)´Â ¸ðµç ±ÇÇÑÀÌ Çã°¡µÇ°í ÀÖÀ¸¹Ç·Î allowed µË´Ï´Ù