Á¦2 Àå Zend_Acl

¸ñÂ÷

2.1. µµÀÔ
2.1.1. ÀÚ¿ø¿¡ ´ëÇØ
2.1.2. ·Ñ¿¡ ´ëÇØ
2.1.3. ¾×¼¼½º Á¦¾î ¸®½ºÆ® (ACL) ÀÇ ÀÛ¼º
2.1.4. ·ÑÀÇ µî·Ï
2.1.5. ¾×¼¼½º Á¦¾îÀÇ Á¤ÀÇ
2.1.6. ACL ¿¡ÀÇ ¹®ÀÇ
2.2. ¾×¼¼½º Á¦¾îÀÇ °³¼±Çϱâ
2.2.1. ÀûÈ®ÇÑ ¾×¼¼½º Á¦¾î
2.2.2. ¾×¼¼½º Á¦¾îÀÇ »èÁ¦
2.3. °íµµÀÇ »ç¿ë¹ý
2.3.1. ACL µ¥ÀÌÅÍÀÇ º¸Á¸¿¡ ÀÇÇÑ ¿µ¼Ó¼ºÀÇ È®º¸
2.3.2. assertion¸¦ »ç¿ëÇÑ Á¶°ÇºÎ ACL ±ÔÄ¢ÀÇ ÀÛ¼º

2.1. µµÀÔ

Zend_Acl (Àº)´Â, °æ·®À¸·Î À¯¿¬ÇÑ ¾×¼¼½º Á¦¾î ¸®½ºÆ® (ACL) ±â´É°ú ±ÇÇÑ °ü¸® ±â´ÉÀ» Á¦°øÇÕ´Ï´Ù.¾îÇø®ÄÉÀ̼ǿ¡¼­´Â ÀϹÝÀûÀ¸·Î, º¸È£µÈ ¿ÀºêÁ§Æ®¿¡ÀÇ ¾×¼¼½º¸¦ Á¦¾îÇϱâ À§Çؼ­ ÀÌ·¯ÇÑ ±â´ÉÀ» »ç¿ëÇÕ´Ï´Ù.

ÀÌ ¹®¼­¿¡ ´ëÇϰí,

  • ÀÚ¿ø (Resource) (ÀÌ)¶õ, ¾×¼¼½º Á¦¾îÀÇ ´ë»óÀÌ µÇ´Â ¿ÀºêÁ§Æ®ÀÔ´Ï´Ù.

  • ·Ñ (Role) (ÀÌ)¶õ, ÀÚ¿ø¿¡ ´ëÇØ¼­ÀÇ ¾×¼¼½º¸¦ ¿ä±¸ÇÏ´Â ¿ÀºêÁ§Æ®ÀÔ´Ï´Ù.

°£´ÜÇÏ°Ô ¸»Çϸé, ·ÑÀÌ ÀÚ¿ø¿¡ ´ëÇØ¼­ÀÇ ¾×¼¼½º¸¦ ¿ä±¸ÇÑ´Ù ±×·¸´Ù°í ÇÏ´Â °ÍÀÔ´Ï´Ù.¿¹¸¦ µé¾î, ¾î´À »ç¶÷ÀÌ ÀÚµ¿Â÷¸¦ ÀÌ¿ëÇÏ°í ½Í´Ù°í »ý°¢Çϰí ÀÖ´Ù°í ÇսôÙ. ÀÌ °æ¿ì, ÀÚµ¿Â÷¸¦ ´©°¡ ÀÌ¿ëÇÒ ¼ö ÀÖ´ÂÁö°¡ °ü¸®µÇ°í ÀÖ´Ù°í ÇÏ¸é ¡¸ÀÖ´Â »ç¶÷¡¹ÀÌ ·Ñ·Î ¡¸ÀÚµ¿Â÷¡¹°¡ ÀÚ¿øÀÌ µË´Ï´Ù.

¾×¼¼½º Á¦¾î ¸®½ºÆ® (ACL) (À¸)·ÎÀÇ ¼³Á¤¿¡ ÀÇÇØ¼­, ¾îÇø®ÄÉÀ̼ÇÀº ¿ä±¸ÇØ ¿Â ¿ÀºêÁ§Æ® ( ·Ñ) ÇÏÁö¸¸ Á¦ÇÑµÈ ¿ÀºêÁ§Æ® ( ÀÚ¿ø) ¿¡ÀÇ ¾×¼¼½º¸¦ ÀÎÁ¤¹Þ°í ÀÖ´ÂÁö ¾î¶²Áö¸¦ Á¦¾îÇÕ´Ï´Ù.

2.1.1. ÀÚ¿ø¿¡ ´ëÇØ

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" µî) µµ ¼­Æ÷Æ®Çϰí ÀÖ¾î, ¸ðµç ±ÇÇÑ È¤Àº ÀϺÎÀÇ ±ÇÇÑÀ¸·Î ¿µÇâÀ» ¹ÌÄ¡´Â ±ÔÄ¢À», ÀÚ¿ø¿¡ ´ëÇØ¼­ ÇÒ´çÇÒ ¼ö ÀÖ½À´Ï´Ù.

2.1.2. ·Ñ¿¡ ´ëÇØ

ÀÚ¿ø°ú °°ÀÌ, ·ÑÀ» ÀÛ¼ºÇÏ´Â °Íµµ °£´ÜÇÕ´Ï´Ù.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 (Àº)´Â º¹¼ö ·Ñ·ÎºÎÅÍÀÇ ±ÔÄ¢ÀÇ °è½ÂÀ» ¼­Æ÷Æ®Çϰí ÀÖ½À´Ï´Ù¸¸, ¼­·ÎÀÇ ±ÔÄ¢ÀÌ Ãæµ¹ÇÒ °¡´É¼ºµµ ÀÖ½À´Ï´Ù. ´ç¿¬, ÀÌ Ãæµ¹Àº ÇØ¼ÒÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. Zend_Acl ±×·³, ÀÌ·¯ÇÑ Ãæµ¹ÀÇ °¡´É¼ºÀ» ÇØ°áÇϱâ À§Çؼ­, ¹Ù·Î ¿·¿¡ °è½ÂµÈ ·ÑÀÇ ¿ì¼±µµ°¡ ³ô¾ÆÁöµµ·Ï(µíÀÌ) Çϰí ÀÖ½À´Ï´Ù. Áï, ¾î´À ±ÔÄ¢ÀÌ " ºÎ¸ðÀÇ" ·Ñ ( ¹Ù·Î ¿·ÀÇ °è½Â¿ø) ±×¸®°í ¹ß°ßµÇ¸é, ±×°ÍÀ» ä¿ëÇØ, ´Ù¸¥ ±ÔÄ¢Àº »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù.±×·¸´Ù°í ÇÏ´Â °Íµµ, À̰ÍÀÌ °¡Àå ¿ì¼±µµÀÇ ³ôÀº ±ÔÄ¢ÀÌ µÇ±â ¶§¹®ÀÔ´Ï´Ù.

2.1.3. ¾×¼¼½º Á¦¾î ¸®½ºÆ® (ACL) ÀÇ ÀÛ¼º

ACL (À»)¸¦ »ç¿ëÇϰí, ¹°¸®Àû ȤÀº °¡»óÀûÀÎ ¿ÀºêÁ§Æ®ÀÇ Æí¼ºÀ» ¼Ò¸Á ´ë·Î¿¡ Ç¥ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù.±×·¯³ª ¿©±â¿¡¼­´Â, ¼³¸í¿ëÀ¸·Î¼­ ±âº»ÀûÀÎ ÄÁÅÙÃ÷ °ü¸® ½Ã½ºÅÛ (CMS) ÀÇ ACL (À»)¸¦ »ý°¢ÇÕ´Ï´Ù. À̰ÍÀº, ´Ù¾çÇÑ ¿µ¿ª¿¡¼­ º¹¼ö °èÃþÀÇ ±×·ìÀ» °ü¸®ÇÏ´Â °ÍÀÔ´Ï´Ù. »õ·Ó´Ù ACL ¿ÀºêÁ§Æ®¸¦ ÀÛ¼ºÇÏ·Á¸é , ¾Æ¹«°Íµµ ÆÄ¶ó¹ÌÅ͸¦ ÁöÁ¤ÇÏÁö ¾Ê°í ACL ÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇÕ´Ï´Ù.


<?php
require_once 'Zend/Acl.php';

$acl = new Zend_Acl();
[
ÁÖÀÇ] ÁÖÀÇ

Zend_Acl ÀÇ ½ÇÀåÀº, µðÆúÆ®¿¡¼­´Â " È­ÀÌÆ® ¸®½ºÆ®" Çü½ÄÀÌ µË´Ï´Ù. Áï, °³¹ßÀÚ°¡ ¸í½ÃÀûÀ¸·Î ÁöÁ¤ÇÏÁö ¾Ê´Â ÀÌ»óZend_Acl (Àº)´Â ¸ðµç ·ÑÀÇ ¸ðµç ÀÚ¿ø»óÀÇ ±ÇÇÑÀ¸·ÎºÎÅÍÀÇ ¾×¼¼½ºµµ °ÅºÎÇÕ´Ï´Ù.

2.1.4. ·ÑÀÇ µî·Ï

ÄÁÅÙÃ÷ °ü¸® ½Ã½ºÅÛ¿¡¼­´Â, °ÅÀÇ ¸ðµç Àå¸é¿¡¼­ ±ÇÇÑ °èÃþÀÇ °ü¸®°¡ ÇÊ¿äÇÕ´Ï´Ù. À̰Ϳ¡ ÀÇÇØ, À¯ÀúÀÇ ÆíÁý ±ÇÇÑÀ» °áÁ¤ÇÕ´Ï´Ù.¿¹¸¦ µé¾î '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);

/*  ȤÀº, À§ÀÇ ³»¿ëÀº ´ÙÀ½°ú °°ÀÌ ¾µ ¼öµµ ÀÖ½À´Ï´Ù
$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'));

2.1.5. ¾×¼¼½º Á¦¾îÀÇ Á¤ÀÇ

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($roleGuestnull'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 (Àº)´Â, ±ÔÄ¢À» ¸ðµç ÀÚ¿ø¿¡ ´ëÇØ¼­ Àû¿ëÇÏ´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù.

2.1.6. ACL ¿¡ÀÇ ¹®ÀÇ

À̰ÍÀ¸·Î, À¯¿¬ÇÑ 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  µË´Ï´Ù