2011-01-31 1 views
0

Zend_Auth에 약간의 문제가 발생하여 내 Acl 내에서 오류가 계속 발생합니다. 내 로그인 컨트롤러 I 설정 내에서 Zend_Auth/Zend_Session 오류 및 Auth 저장소에 개체 저장

내 Zend_Auth 저장이 잘 작동하는 것 같다 내가 아무 문제없이보기 도우미 내에서 Zend_Auth 스토리지에 저장된 객체를 사용 할 수 있어요

$auth = Zend_Auth::getInstance(); 
$result = $auth->authenticate($adapter); 

if ($result->isValid()) { 
    $userId = $adapter->getResultRowObject(array('user_id'), null)->user_id; 

    $user = new User_Model_User; 
    $users = new User_Model_UserMapper; 

    $users->find($userId, $user); 

    $auth->getStorage()->write(
     $user 
    ); 
} 

을 다음과 같이. 문제는 내가 가지고있는 것 같다는 내 Acl 내에서 이것을 사용하려고하면, 내 Acl에서 발췌 한 것입니다, 바로 아래에 자세한 예외를 얻을 if($auth->hasIdentity()) { 라인에 도착하자마자.

$user->getUserLevel()은 데이터베이스에 저장된 user_level_id를 의미 전체 이름으로 변환 할 수있는 사용자 모델 내의 메타입니다. 나는 자동 로더가 이러한 종류의 메타 드를보고 필요한 모든 클래스를로드하려고 시도하고 있다고 가정하고있다.

모듈을 저장할 때 클래스 찾기에 어려움이있는 것처럼 보일 때, application.ini에 자동 로더 이름 공간 설정이 있습니다.

누구든지 해결할 수 있습니까?

class App_Controller_Plugin_Acl extends Zend_Controller_Plugin_Abstract 
{ 
    protected $_roleName; 

    public function __construct() 
    { 
     $auth = Zend_Auth::getInstance(); 
     if($auth->hasIdentity()) {  
      $user = $auth->getIdentity(); 
      $this->_roleName = strtolower($user->getUserLevel());   
     } else { 
      $this->_roleName = 'guest'; 
     } 
    } 
} 


Fatal error: Uncaught exception 'Zend_Session_Exception' with message 'Zend_Session::start() - 
\Web\library\Zend\Loader.php(Line:146): Error #2 include_once() [<a href='function.include'>function.include</a>]: 
Failed opening 'Menu\Model\UserLevel.php' for inclusion 
(include_path='\Web\application/../library;\Web\library;.;C:\php5\pear') Array' in \Web\library\Zend\Session.php:493 

Stack trace: 
#0 \Web\library\Zend\Session\Namespace.php(143): Zend_Session::start(true) 
#1 \Web\library\Zend\Auth\Storage\Session.php(87): Zend_Session_Namespace->__construct('Zend_Auth') 
#2 \Web\library\Zend\Auth.php(91): Zend_Auth_Storage_Session->__construct() 
#3 \Web\library\Zend\A in \Web\library\Zend\Session.php on line 493 

감사합니다,

마틴

+0

모듈을 부트 스트랩하셨습니까? – Ashley

+0

안녕하세요 애쉴리, 부트 스트랩을 어떻게 의미합니까, 다음 행이 있습니다. 다른 것이 필요합니까 ... Autoloadernamespaces [] = "Menu_", resources.modules [] = "" – Martin

답변

0

이 문제는 않은 직렬화 객체를 관련이 있습니다. 예외가 무엇이 잘못되었는지 알려줍니다. Zend_Loader가 UserLevel 클래스를 찾을 수 없습니다 (저는 User_Model_User의 멤버 임).

ACL을 구성 할 때 포함 경로가 올바르게 설정 되었습니까?

A는 해키 작업 주위에 당신의 ACL 클래스 파일에

require_once 'path/to/Menu/Model/UserLevel.php'; 

를 추가하는 것입니다.

+0

안녕하세요 Phil, 행운을 함께 포함 경로 모듈 디렉토리. 각 파일을 포함하면 작동하지만 불행히도 나는 거의 모든 모델을 포함하여 끝날 것입니다. 모든 모델이 서로 서로 연결되어 있기 때문입니다. 이전 방식으로 돌아가서 사용자 모델 대신 사용자 ID를 저장하고 필요할 때 모델을로드 할 수 있습니다. 당신의 도움을 주셔서 감사합니다. – Martin