Á¦3Àå Zend_Auth

¸ñÂ÷

3.1. µµÀÔ
3.1.1. ¾î´ðÅÍ
3.1.2. °á°ú
3.1.3. ID ÀÇ ¿µ¼Ó¼º
3.1.4. Zend_Auth ÀÇ »ç¿ë¹ý
3.2. µ¥ÀÌŸº£À̽ºÀÇ Å×À̺í·ÎÀÇ ÀÎÁõ
3.2.1. µµÀÔ
3.2.2. ÀÀ¿ë¿¹: Áö¼ÓÀûÀÎ DbTable °á°ú ¿ÀºêÁ§Æ®
3.2.3. °íµµÀÇ »ç¿ë¿¹
3.3. ´ÙÀÌÁ¦½ºÆ® ÀÎÁõ
3.3.1. µµÀÔ
3.3.2. »ç¿ë
3.3.3. ID
3.4. HTTP ÀÎÁõ ¾î´ðÅÍ
3.4.1. µµÀÔ
3.4.2. ¼³°èÀÇ °³¿ä
3.4.3. ¼³Á¤ ¿É¼Ç
3.4.4. ¸®Àý¹ö
3.4.5. ±âº»ÀûÀÎ »ç¿ë¹ý
3.5. Open ID ÀÎÁõ
3.5.1. µµÀÔ
3.5.2. »ç¾ç

3.1. µµÀÔ

Zend_Auth (Àº)´Â, ÀÎÁõÀ» À§ÇÑ API (À»)¸¦ Á¦°øÇÕ´Ï´Ù. ¶Ç, ÀϹÝÀûÀÎ »ç¿ë¿¹¿¡ ´ëÀÀÇÏ´Â ±¸»ó ÀÎÁõ ¾î´ðÅ͵µ ÁغñÇØ ÀÖ½À´Ï´Ù.

Zend_Auth ÇÏÁö¸¸ Ãë±ÞÇÏ´Â °ÍÀº ¾îµð±îÁö³ª ÀÎÁõ (authentication) (À̾î)¿©,½ÂÀÎ (authorization) (ÀÌ)°¡ ¾Æ´Õ´Ï´Ù. ÀÎÁõ (authentication) (¿Í)°ú´Â Áï, ¾î´À ¿£Æ¼Æ¼°¡ ´©±¸ÀÎÁö¸¦ ³ªÅ¸³½´Ù (½Äº°ÇÑ´Ù) ÀÏÀÔ´Ï´Ù.À̰ÍÀ», ÇϵîÀÇ Á¶°Ç¿¡ ÀǰÅÇØ ½Ç½ÃÇÕ´Ï´Ù. ½ÂÀÎ (authorization) (ÀÌ)¶õ, ¾î´À ¿£Æ¼Æ¼°¡ ´Ù¸¥ ¿£Æ¼Æ¼¿¡ ´ëÇØ¼­ ¾×¼¼½º Çϰųª ¾î¶°ÇÑ Á¶ÀÛÀ» Çϰųª ÇÏ´Â ±ÇÇÑÀÌ ÀÖÀ»Áö¸¦ ÆÇÁ¤Çϴ ó¸®ÀÔ´Ï´Ù. À̰ÍÀº Zend_Auth ÀÇ ´ë»ó¿Ü°¡ µË´Ï´Ù. Zend Framework ¿¡ À־ÀÇ ÀÎÁõÀ̳ª ¾×¼¼½º Á¦¾îÀÇ »ó¼¼ÇÑ °Í¿¡ ´ëÇÏ¿©´Â, Zend_Acl (À»)¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ.

[ÁÖÀÇ] ÁÖÀÇ

Zend_Auth Ŭ·¡½º´Â ½Ì±Û Åæ ÆÐÅÏ (Ŭ·¡½ºÀÇ ÀνºÅϽº´Â Ç×»ó Çϳª¸¸) (À»)¸¦ ½ÇÀåÇϰí ÀÖ¾î, Á¤Àû ¸Þ¼Òµå getInstance() ±×¸®°í ±×°ÍÀ» »ç¿ëÇÕ´Ï´Ù. Áï,new ¿¬»êÀÚ³ª clone Ű¿öµå´Â Zend_Auth Ŭ·¡½º¿¡¼­´Â µ¿ÀÛÇÏÁö ¾Ê´Â´Ù°í ÇÏ´Â °ÍÀÔ´Ï´Ù.±× ´ë½Å¿¡ Zend_Auth::getInstance() (À»)¸¦ »ç¿ëÇÕ´Ï´Ù.

3.1.1. ¾î´ðÅÍ

Zend_Auth ¾î´ðÅÍÀÇ »ç¿ë ¸ñÀûÀº, LDAP (ÀÌ)³ª RDBMS ȤÀº ÆÄÀÏ (¿Í)°ú °°Àº ƯÁ¤ÀÇ ÇüÅÂÀÇ ÀÎÁõ ¼­ºñ½º¿¡ ´ëÇÑ ÀÎÁõÀ» ½Ç½ÃÇÏ´Â °ÍÀÔ´Ï´Ù. ¾î´ðÅÍ¿¡ ÀÇÇØ¼­ ±× ¿É¼ÇÀ̳ª °Åµ¿Àº Å©°Ô ´Ù¸£°ÚÁö¸¸, ¸î°³ÀÇ ±âº» 󸮴Â, ¸ðµç ÀÎÁõ ¾î´ðÅÍ·Î °øÅëÀÌ µË´Ï´Ù. ¿¹¸¦ µé¾î ÀÎÁõ Á¶°Ç (À̸¥¹Ù ID) (À»)¸¦ ¹Þ¾Æ, ÀÎÁõ ¼­ºñ½º¿¡ ´ëÇÑ ¹®ÀǸ¦ ½Ç½ÃÇØ, °á°ú¸¦ µ¹·ÁÁشٰí Çϴ ó¸®´Â, ¸ðµç Zend_Auth ¾î´ðÅÍ·Î °øÅëÀÔ´Ï´Ù.

°¢ Zend_Auth ¾î´ðÅÍ Å¬·¡½º´Â,Zend_Auth_Adapter_Interface (À»)¸¦ ½ÇÀåÇϰí ÀÖ½À´Ï´Ù.ÀÌ ÀÎÅÍÆäÀ̽º·Î Á¤Àǵǰí ÀÖ´Â ¸Þ¼Òµå°¡ authenticate() ±×¸®°í, ¾î´ðÅÍ Å¬·¡½º´Â ÀÎÁõ Äõ¸®¸¦ ½ÇÇàÇϱâ À§Çؼ­ À̰ÍÀ» ½ÇÀåÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. °¢ ¾î´ðÅÍ Å¬·¡½º´Â,authenticate() (À»)¸¦ ÄÝ Çϱâ Àü¿¡ Áغñ¸¦ ³¡¸¶ÃÄ µÑ Çʿ䰡 ÀÖ½À´Ï´Ù. Áï, ¾î´ðÅÍÃø¿¡¼­ ÁغñÇØ¾ß ÇÏ´Â ±â´ÉÀ¸·Î¼­´Â ÀÎÁõ Á¶°Ç (À¯Àú¸í ¹× ÆÐ½º¿öµå µî) ÀÇ ÃëµæÀ̳ª ¾î´ðÅÍ °íÀ¯ÀÇ ¿É¼ÇÀÇ ¼³Á¤ (µ¥ÀÌŸº£À̽ºÀÇ Å×À̺íÀ» »ç¿ëÇÏ´Â ¾î´ðÅͶó¸é µ¥ÀÌŸº£À̽º¿¡ÀÇ Á¢¼Ó ¼³Á¤ µî) ÇÏÁö¸¸ ÀÖ´Â °ÍÀÔ´Ï´Ù.

ÀÌÇÏ¿¡ ÁÖ´Â °ÍÀº ÀÎÁõ ¾î´ðÅÍÀÇ »ùÇ÷Î, À̰ÍÀº À¯Àú¸íÀ¸·Î ÆÐ½º¿öµå¸¦ ¹Þ¾ÆµéÀ̰í ÀÎÁõÀ» ½Ç½ÃÇÕ´Ï´Ù. ±× ¿ÜÀÇ »ó¼¼, ¿¹¸¦ µé¸é ÀÎÁõ ¼­ºñ½º¿¡ÀÇ ½ÇÁ¦ÀÇ ¹®ÀÇ µîÀº, ¿¹¸¦ °£°áÇÏ°Ô Çϱâ À§ÇÑ(ÇØ) »ý·« Çϰí ÀÖ½À´Ï´Ù.


<?php
require_once 'Zend/Auth/Adapter/Interface.php';

class 
MyAuthAdapter implements Zend_Auth_Adapter_Interface
{
    
/**
     * ÀÎÁõ¿ëÀÇ À¯Àú¸í°ú ÆÐ½º¿öµå¸¦ ¼³Á¤ÇÕ´Ï´Ù
     *
     * @return void
     */
    
public function __construct($username$password)
    {
        
// ...
    
}

    
/**
     * ÀÎÁõÀ» ½ÃµµÇÕ´Ï´Ù
     *
     * @throws Zend_Auth_Adapter_Exception ÇÏÁö¸¸, ÀÎÁõ 󸮸¦ ÇÒ ¼ö ¾ø¾ú´ø °æ¿ì¿¡ ¹ß»ýÇÕ´Ï´Ù
     * @return Zend_Auth_Result
     */
    
public function authenticate()
    {
        
// ...
    
}
}

docblock ÄÚ¸àÆ®·Î ¼³¸íÇϰí ÀÖ´Â ´ë·Î, authenticate() ÇÏ Zend_Auth_Result (ȤÀº Zend_Auth_Result ÀÇ »ó¼Ó Ŭ·¡½º) ÀÇ ÀνºÅϽº¸¦ µ¹·ÁÁÙ Çʿ䰡 ÀÖ½À´Ï´Ù.¾î¶°ÇÑ ÀÌÀ¯·Î ÀÎÁõÀÇ ¹®ÀǸ¦ ÇÒ ¼ö ¾ø¾ú´ø °æ¿ì´Â, authenticate() ÇÏ Zend_Auth_Adapter_Exception (À¸)·ÎºÎÅÍ ÆÄ»ýÇÑ ¿¹¿Ü¸¦ ½½·Î¿ì ÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.

3.1.2. °á°ú

Zend_Auth ¾î´ðÅÍ´Â,authenticate() ÀÇ °á°ú·Î¼­ Zend_Auth_Result ÀÇ ÀνºÅϽº¸¦ µ¹·ÁÁÝ´Ï´Ù. À̰Ϳ¡ ÀÇÇØ, ÀÎÁõÀ» ½ÃµµÇÑ °á°ú¸¦ ³ªÅ¸³À´Ï´Ù.¾î´ðÅÍÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇßÀ» ¶§¿¡ Zend_Auth_Result ¿ÀºêÁ§Æ®°¡ ÀÛ¼ºµÇ¾î ÀÌÇÏÀÇ 4 °³ÀÇ ¸Þ¼Òµå·Î Zend_Auth ¾î´ðÅÍÀÇ °á°ú¿¡ ´ëÇÑ °øÅëÀÇ Á¶ÀÛÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù.

  • isValid() - ±× °á°ú°¡ ÀÎÁõÀÇ ¼º°øÀ» ³ªÅ¸³»°í ÀÖ´Â °æ¿ì¿¡°Ô¸¸ true (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù.

  • getCode() - Zend_Auth_Result ÀÇ Á¤¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù. À̰ÍÀº, ÀÎÁõ¿¡ ½ÇÆÐÇß´ÂÁö ¼º°øÇß´ÂÁö¸¦ ³ªÅ¸³»´Â °ÍÀÔ´Ï´Ù. À̰ÍÀ» »ç¿ëÇÏ´Â Àå¸éÀ¸·Î¼­´Â, ÀÎÁõÀÇ °á°ú¸¦ ¸î°³ÀÇ °á°ú·ÎºÎÅÍ ±¸º°ÇÏ°í ½ÍÀº °æ¿ìµîÀÌ ÀÖ½À´Ï´Ù. À̰Ϳ¡ ÀÇÇØ, ¿¹¸¦ µé¾î ÀÎÁõ °á°ú¿¡ ´ëÇØ¼­, º¸´Ù »ó¼¼ÇÑ Á¤º¸¸¦ °ü¸®ÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. ´Ù¸¥ »ç¿ë¹ýÀ¸·Î¼­´Â, À¯Àú¿¡°Ô ³ªÅ¸³»´Â ¸Þ¼¼Áö¸¦ º¯°æÇØ, º¸´Ù »ó¼¼ÇÑ Á¤º¸¸¦ ÀüÇØÁöµµ·Ï(µíÀÌ) ÇÏ´Â °ÍµîÀÌ ÀÖ½À´Ï´Ù. ±×·¯³ª, ÀϹÝÀûÀÎ ¡¸ÀÎÁõ ½ÇÆÐ¡¹¸Þ¼¼Áö´Â ¾Æ´Ï°í À¯Àú¿¡ ´ëÇØ¼­ »ó¼¼ÇÑ Á¤º¸¸¦ ³ªÅ¸³¾ ¶§ , ±× ¸®½ºÅ©¸¦ ¾Ë¾Æ µÎ¾î¾ß ÇÕ´Ï´Ù. »ó¼¼ÇÑ Á¤º¸´Â, ÀÌÇÏÀÇ ÁÖÀǸ¦ ÂüÁ¶ÇØ ÁֽʽÿÀ.

  • getIdentity() - ÀÎÁõÀ» ½ÃµµÇß´Ù ID Á¤º¸¸¦ µ¹·ÁÁÝ´Ï´Ù.

  • getMessages() - ÀÎÁõ¿¡ ½ÇÆÐÇßÀ» °æ¿ì¿¡, °ü·ÃÇÏ´Â ¸Þ¼¼ÁöÀÇ ¹è¿­À» µ¹·ÁÁÝ´Ï´Ù.

ÀÎÁõÀÇ °á°ú¿¡ ÀÇÇØ¼­ 󸮸¦ ºÐ±â½ÃÄÑ,º¸´Ù °áÁ¤ÇØ Àڱ׸¶ÇÑ Ã³¸®¸¦ ½Ç½ÃÇÏ°í ½ÍÀº °Íµµ ÀÖ°ÚÁö¿ä. À¯¿ëÇÑ Ã³¸®·Î¼­´Â, ¿¹¸¦ µé¾î À߸øµÈ ÆÐ½º¿öµå¸¦ ¹Ýº¹ÇØ ÀÔ·ÂÇÑ ¾îÄ«¿îÆ®¸¦ Àá±×°Å³ª Á¸ÀçÇÏÁö ¾Ê´Â´Ù ID (À»)¸¦ ¸î¹øÀ̳ª ÀÔ·ÂÇß´Ù IP ÁÖ¼Ò¿¡ Ç¥¸¦ ºÎ·Ï, À¯Àú¿¡ ´ëÇØ¼­ º¸´Ù ¾Ë±â ½¬¿î ¸Þ¼¼Áö¸¦ µ¹·ÁÁְųª¶ó°í Çß´ø ÀûÀÌ ÀÖ½À´Ï´Ù. ´ÙÀ½ÀÇ °á°ú Äڵ尡 »ç¿ë °¡´ÉÇÕ´Ï´Ù.


Zend_Auth_Result::SUCCESS
Zend_Auth_Result::FAILURE
Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND
Zend_Auth_Result::FAILURE_IDENTITY_AMBIGUOUS
Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID
Zend_Auth_Result::FAILURE_UNCATEGORIZED

´ÙÀ½ÀÇ ¿¹´Â, °á°ú Äڵ带 ó¸®ÇÏ´Â ¹æ¹ýÀ» ³ªÅ¸³»´Â °ÍÀÔ´Ï´Ù.


<?php
// AuthController / loginAction ¾ÈÀÇ Ã³¸®
$result $this->_auth->authenticate($adapter);

switch (
$result->getCode()) {

    case 
Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND:
        
/** ID ÇÏÁö¸¸ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ìÀÇ Ã³¸® **/
        
break;

    case 
Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID:
        
/** ÀÎÁõ¿¡ ½ÇÆÐÇßÀ» °æ¿ìÀÇ Ã³¸® **/
        
break;

    case 
Zend_Auth_Result::SUCCESS:
        
/** ÀÎÁõ¿¡ ¼º°øÇßÀ» °æ¿ìÀÇ Ã³¸® **/
        
break;

    default:
        
/** ±× ¿ÜÀÇ ¿øÀÎÀ¸·Î ½ÇÆÐÇßÀ» °æ¿ìÀÇ Ã³¸® **/
        
break;
}

3.1.3. ID ÀÇ ¿µ¼Ó¼º

ÀÎÁõ Á¤º¸ (ÆÐ½º¿öµå µî) (À»)¸¦ Æ÷ÇÔÇÑ ÀÎÁõÀ» ¿ä±¸ÇÏ´Â °ÍÀº Æí¸®ÇÑ °ÍÀÔ´Ï´Ù¸¸, ¸®Äù½ºÆ® ¸¶´Ù Çϳª Çϳª ÀÎÁõ Á¤º¸¸¦ ²ø°í ´Ù´Ï´Â °ÍÀÌ ¾Æ´Ï¶ó, ÀÎÁõ ³¡³­ ID (À»)¸¦ °è¼Ó º¸°ü À¯ÁöÇÏ´Â °Íµµ Áß¿äÇÕ´Ï´Ù.

HTTP (Àº)´Â ½ºÅ×ÀÌÆ®·¹½ºÀÎ ÇÁ·ÎÅäÄÝÀÔ´Ï´Ù.±×·¯³ª, ÄíŰ³ª ¼¼¼ÇÀ̶ó°í ÇÏ´Â ±â¼ú¿¡ ÀÇÇØ¼­, ¼­¹ö »çÀ̵åÀÇ À¥ ¾îÇø®ÄÉÀ̼ǿ¡¼­µµ º¹¼ö ¸®Äù½ºÆ®°£¿¡ ½ºÅ×ÀÌÆ® (»óÅÂ) (À»)¸¦ º¸°ü À¯ÁöÇØ °è¼ÓµÇ°Ô µÇ¾ú½À´Ï´Ù.

3.1.3.1. PHP ¼¼¼Ç¿¡ À־ÀÇ µðÆúÆ®ÀÇ Áö¼Ó¼º

µðÆúÆ®¿¡¼­´Â,Zend_Auth (Àº)´Â, ÀÎÁõ¿¡ ¼º°øÇßÀ» ¶§ÀÇ ID Á¤º¸¸¦ PHP ÀÇ ¼¼¼ÇÀ» »ç¿ëÇØ º¸Á¸ÇÕ´Ï´Ù. ÀÎÁõ¿¡ ¼º°øÇϸé,Zend_Auth::authenticate() (Àº)´Â ÀÎÁõ °á°ú¸¦ Áö¼Ó ½ºÅ丮Áö¿¡ º¸Á¸ÇÕ´Ï´Ù.¾Æ¹«°Íµµ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é, Zend_Auth ÇÏÁö¸¸ »ç¿ëÇÏ´Â ½ºÅ丮Áö Ŭ·¡½º´Â Zend_Auth_Storage_Session µË´Ï´Ù.À̰ÍÀº Zend_Session (À»)¸¦ »ç¿ëÇϰí ÀÖ½À´Ï´Ù. µ¶ÀÚÀûÀΠŬ·¡½º¸¦ »ç¿ëÇÏ·Á¸é ,Zend_Auth_Storage_Interface (À»)¸¦ ½ÇÀåÇÑ Å¬·¡½ºÀÇ ¿ÀºêÁ§Æ®¸¦ Zend_Auth::setStorage() ±×¸®°í ¼³Á¤ÇÕ´Ï´Ù.

[ÁÖÀÇ] ÁÖÀÇ

¸¸¾à ID ÇÏÁö¸¸ ÀÚµ¿ÀûÀ¸·Î Áö¼Ó ½ºÅ丮Áö¿¡ º¸Á¸µÇ´Â °ÍÀÌ ¸¶À½¿¡ µéÁö ¾Ê´Â °æ¿ì´Â, Zend_Auth Ŭ·¡½º¸¦ Åë°·Î »ç¿ëÇÏ´Â °ÍÀ» ¾Õ¿¡ µÎ°í, ¾î´ðÅÍ Å¬·¡½º¸¦ Á÷Á¢ »ç¿ëÇÕ´Ï´Ù.

·Ê 3.1. ¼¼¼Ç À̸§ °ø°£ÀÇ º¯°æ

Zend_Auth_Storage_Session (Àº)´Â, ¼¼¼Ç À̸§ °ø°£À¸·Î¼­ 'Zend_Auth' (À»)¸¦ »ç¿ëÇÕ´Ï´Ù.À̰ÍÀ» º¯°æÇÏ·Á¸é , ´Ù¸¥ °ªÀ» Zend_Auth_Storage_Session ÀÇ constructor¡¡ ¡¡ À¸·Î ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ °ªÀÌ, ³»ºÎ¿¡¼­ Zend_Session_Namespace ÀÇ constructor¡¡ ¡¡ ¿¡°Ô °Ç³×Áý´Ï´Ù.À̰ÍÀº ÀÎÁõÀ» ½ÃµµÇϱâ Àü¿¡ ½Ç½ÃÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ¿Ö³ÄÇϸé,Zend_Auth::authenticate() ÇÏ ID (À»)¸¦ ÀÚµ¿ÀûÀ¸·Î º¸Á¸Çϱ⠶§¹®ÀÔ´Ï´Ù.


<?php
// Zend_Auth ÀÇ ½Ì±Û Åæ ÀνºÅϽº¿¡ÀÇ ÂüÁ¶¸¦ º¸Á¸ÇÕ´Ï´Ù
require_once 'Zend/Auth.php';
$auth Zend_Auth::getInstance();

// 'Zend_Auth' ÀÇ °ÍÀÎÁö ºñ±³Àû 'someNamespace' (À»)¸¦ »ç¿ëÇÕ´Ï´Ù
require_once 'Zend/Auth/Storage/Session.php';
$auth->setStorage(new Zend_Auth_Storage_Session('someNamespace'));

/**
 * @todo ÀÎÁõ ¾î´ðÅÍ $authAdapter (À»)¸¦ ¼³Á¤ÇÕ´Ï´Ù
 */

// ÀÎÁõ°ú °á°úÀÇ º¸Á¸, ±×¸®°í ¼º°ø½Ã¿¡ ID (À»)¸¦ Áö¼Ó½Ãŵ´Ï´Ù
$result $auth->authenticate($authAdapter);


3.1.3.2. µ¶ÀÚÀûÀÎ ½ºÅ丮ÁöÀÇ ½ÇÀå

Zend_Auth_Storage_Session (¿Í)°ú´Â ´Ù¸¥ Çü½Ä¿¡¼­, ID (À»)¸¦ Áö¼Ó½ÃŰ°í ½Í¾îÁö±âµµ ÇϰÚÁö¿ä.±×·¯ÇÑ °æ¿ì´Â, Zend_Auth_Storage_Interface (À»)¸¦ ½ÇÀåÇÑ Å¬·¡½ºÀÇ ÀνºÅϽº¸¦ Zend_Auth::setStorage() ±×¸®°í ¼³Á¤ÇÕ´Ï´Ù.

·Ê 3.2. µ¶ÀÚÀûÀÎ ½ºÅ丮Áö Ŭ·¡½ºÀÇ »ç¿ë¹ý

ID (À»)¸¦ Áö¼Ó½ÃŰ´Â ½ºÅ丮Áö Ŭ·¡½º¸¦ Zend_Auth_Storage_Session ´ë½Å¿¡ »ç¿ëÇÏ·Á¸é , Zend_Auth_Storage_Interface (À»)¸¦ ½ÇÀåÇÕ´Ï´Ù.


<?php
require_once 'Zend/Auth/Storage/Interface.php';

class 
MyStorage implements Zend_Auth_Storage_Interface
{
    
/**
     * ½ºÅ丮Áö°¡ ÇÏ´ÃÀÇ °æ¿ì¿¡°Ô¸¸ true (À»)¸¦ µ¹·ÁÁØ´Ù
     *
     * @throws Zend_Auth_Storage_Exception ÇÏ´ÃÀÎÁö ¾î¶²Áö ÆÇ´ÜÇÒ ¼ö ¾øÀ» ¶§
     * @return boolean
     */
    
public function isEmpty()
    {
        
/**
         * @todo ½ÇÀåÀÌ ÇÊ¿ä
         */
    
}

    
/**
     * ½ºÅ丮ÁöÀÇ ³»¿ëÀ» µ¹·ÁÁØ´Ù
     *
     * ½ºÅ丮Áö°¡ ÇÏ´ÃÀÇ °æ¿ì¿¡ °Åµ¿Àº ¹ÌÁ¤µµ¸®
     *
     * @throws Zend_Auth_Storage_Exception ½ºÅ丮ÁöÀÇ ³»¿ëÀ» ÀоîµéÀÏ ¼ö ¾ø´Â °æ¿ì
     * @return mixed
     */
    
public function read()
    {
        
/**
         * @todo ½ÇÀåÀÌ ÇÊ¿ä
         */
    
}

    
/**
     * $contents (À»)¸¦ ½ºÅ丮Áö¿¡ ¾´´Ù
     *
     * @param  mixed $contents
     * @throws Zend_Auth_Storage_Exception $contents (À»)¸¦ ½ºÅ丮Áö¿¡ ¾µ ¼ö ¾ø´Â °æ¿ì
     * @return void
     */
    
public function write($contents)
    {
        
/**
         * @todo ½ÇÀåÀÌ ÇÊ¿ä
         */
    
}

    
/**
     * ½ºÅ丮ÁöÀÇ ³»¿ëÀ» ¼Ò°ÅÇÑ´Ù
     *
     * @throws Zend_Auth_Storage_Exception ½ºÅ丮ÁöÀÇ ³»¿ëÀ» ¼Ò°ÅÇÒ ¼ö ¾ø´Â °æ¿ì
     * @return void
     */
    
public function clear()
    {
        
/**
         * @todo ½ÇÀåÀÌ ÇÊ¿ä
         */
    
}

}

ÀÌ ½ºÅ丮Áö Ŭ·¡½º¸¦ »ç¿ëÇÏ·Á¸é , ÀÎÁõ Äõ¸®ÀÇ Àü¿¡ Zend_Auth::setStorage() (À»)¸¦ ½ÇÇàÇÕ´Ï´Ù.


<?php
// Zend_Auth ¿¡, µ¶ÀÚÀûÀÎ ½ºÅ丮Áö Ŭ·¡½º¸¦ »ç¿ëÇϵµ·Ï Áö½ÃÇÕ´Ï´Ù
Zend_Auth::getInstance()->setStorage(new MyStorage());

/**
 * @todo ÀÎÁõ ¾î´ðÅÍ $authAdapter (À»)¸¦ ¼³Á¤ÇÕ´Ï´Ù
 */

// ÀÎÁõ°ú °á°úÀÇ º¸Á¸, ±×¸®°í ¼º°ø½Ã¿¡ ID (À»)¸¦ Áö¼Ó½Ãŵ´Ï´Ù
$result Zend_Auth::getInstance()->authenticate($authAdapter);


3.1.4. Zend_Auth ÀÇ »ç¿ë¹ý

Zend_Auth ÀÇ »ç¿ë¹ý¿¡´Â, ´ÙÀ½ÀÇ 2Åë°¡ ÀÖ½À´Ï´Ù.

  1. °£Á¢ÀûÀ¸·Î Zend_Auth::authenticate() °æÀ¯·Î »ç¿ëÇÑ´Ù

  2. Á÷Á¢, ¾î´ðÅÍÀÇ authenticate() ¸Þ¼Òµå¸¦ »ç¿ëÇÑ´Ù

´ÙÀ½ÀÇ ¿¹´Â,Zend_Auth ¾î´ðÅ͸¦ °£Á¢ÀûÀ¸·Î Zend_Auth Ŭ·¡½º·ÎºÎÅÍ »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù.


<?php
// Zend_Auth ÀÇ ½Ì±Û Åæ ÀνºÅϽº¿¡ÀÇ ÂüÁ¶¸¦ ÃëµæÇÕ´Ï´Ù
require_once 'Zend/Auth.php';
$auth Zend_Auth::getInstance();

// ÀÎÁõ ¾î´ðÅ͸¦ ¼³Á¤ÇÕ´Ï´Ù
$authAdapter = new MyAuthAdapter($username$password);

// ÀÎÁõÀ» ½ÃµµÇØ ±× °á°ú¸¦ ÃëµæÇÕ´Ï´Ù
$result $auth->authenticate($authAdapter);

if (!
$result->isValid()) {
    
// ÀÎÁõ¿¡ ½ÇÆÐÇßÀ¸¹Ç·Î, ¿øÀÎÀ» Ç¥½ÃÇÕ´Ï´Ù
    
foreach ($result->getMessages() as $message) {
        echo 
"$messagen";
    }
} else {
    
// ÀÎÁõ¿¡ ¼º°øÇß½À´Ï´Ù.ID ($username) ÇÏÁö¸¸ ¼¼¼Ç¿¡ º¸Á¸µË´Ï´Ù
    // $result->getIdentity() === $auth->getIdentity()
    // $result->getIdentity() === $username
}

À§ÀÇ ¿¹¿¡ ´ëÇØ ¸®Äù½ºÆ®³»¿¡¼­ ÀÎÁõÀ» Çϸé, ÀÎÁõ¿¡ ¼º°øÇßÀ» ¶§¿¡ ±× ID (À»)¸¦ ÃëµæÇÏ´Â °ÍÀº °£´ÜÇÑ ÀÏÀÔ´Ï´Ù.


<?php
$auth 
Zend_Auth::getInstance();
if (
$auth->hasIdentity()) {
    
// ID ÇÏÁö¸¸ ÀÖÀ¸¹Ç·Î ±×°ÍÀ» ÃëµæÇÕ´Ï´Ù
    
$identity $auth->getIdentity();
}

¿µ¼Ó ½ºÅ丮Áö·ÎºÎÅÍ ÀÎÁõ ID (À»)¸¦ »èÁ¦ÇÏ·Á¸é , ´Ü¼øÇÏ°Ô clearIdentity() ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù. À̰ÍÀº, ¾îÇø®ÄÉÀ̼ÇÀÇ "·Î±×¾Æ¿ô" 󸮸¦ ½ÇÀåÇϱâ À§ÇÑÀÇ °ÍÀÔ´Ï´Ù.


<?php
Zend_Auth
::getInstance()->clearIdentity();

ÀÚµ¿ÀûÀ¸·Î ¿µ¼Ó ½ºÅ丮Áö°¡ ÀÌ¿ëµÇ´Â °ÍÀÌ ¸ÀÀÌ ¾ø´Â °æ¿ìµµ ÀÖ°ÚÁö¿ä. ±×·± °æ¿ì´Â,Zend_Auth Ŭ·¡½º¸¦ ¿ìȸµµ·Î ÇØ ¾î´ðÅÍ Å¬·¡½º¸¦ Á÷Á¢ »ç¿ëÇÕ´Ï´Ù. ¾î´ðÅÍ Å¬·¡½º¸¦ Á÷Á¢ »ç¿ëÇÑ´Ù´Â °ÍÀº, ¾î´ðÅÍ ¿ÀºêÁ§Æ®ÀÇ ¼³Á¤°ú Áغñ¸¦ ½Ç½ÃÇØ, ±× authenticate() ¸Þ¼Òµå¸¦ ÄÝ ÇÏ´Â °ÍÀÔ´Ï´Ù. ¾î´ðÅÍ °íÀ¯ÀÇ »ó¼¼ Á¤º¸¿¡ ´ëÇØ¼­´Â, °¢ ¾î´ðÅÍÀÇ ¹®¼­·Î ¼³¸íÇÕ´Ï´Ù. ÀÌÇÏÀÇ ¿¹´Â,MyAuthAdapter (À»)¸¦ Á÷Á¢ »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù.


<?php
// ÀÎÁõ ¾î´ðÅ͸¦ ¼³Á¤ÇÕ´Ï´Ù
$authAdapter = new MyAuthAdapter($username$password);

// ÀÎÁõÀ» ½ÃµµÇØ ±× °á°ú¸¦ ÃëµæÇÕ´Ï´Ù
$result $authAdapter->authenticate();

if (!
$result->isValid()) {
    
// ÀÎÁõ¿¡ ½ÇÆÐÇßÀ¸¹Ç·Î, ¿øÀÎÀ» Ç¥½ÃÇÕ´Ï´Ù
    
foreach ($result->getMessages() as $message) {
        echo 
"$messagen";
    }
} else {
    
// ÀÎÁõ¿¡ ¼º°øÇß½À´Ï´Ù
    // $result->getIdentity() === $username
}