2012-04-24 2 views
1

현재 사용자 액세스를 위해 Zend_Auth를 사용하는 애플리케이션이 있습니다. 이 사이트에는 자신의 자격 증명을 사용할 때 내 데이터베이스에서 관리자 권한을 가진 한 명의 사용자에게 액세스 권한을 부여하려는 관리 섹션이 있습니다. Zend_Acl이이를 수행하는 유일한 방법입니까? 제가하고 싶은 일에 조금 복잡하거나 제 문제에 대한 더 쉬운 해결책이있을 것 같습니까?ZendFramework 애플리케이션의 관리 섹션

나는 이것에 대해 생각해 봤는데, 이제 사용자를위한 인증 컨트롤러와 내 관리 섹션을위한 인증 컨트롤러가 각각 두 개인 경우가 궁금합니다.

감사합니다.

답변

2

나는 최근에 이렇게했습니다. 사용자 권한 정보를 확인하는 admin 모듈에 대한 프론트 컨트롤러 플러그인을 작성하십시오. 뭔가 같이 :

class Admin_Plugin_Auth extends Zend_Controller_Plugin_Abstract 
{  
    public function preDispatch(Zend_Controller_Request_Abstract $request) 
    { 
     if ($request->getModuleName() != 'admin'){ 
      return; 
     } 
     $auth = Zend_Auth::getInstance(); 
     if (!$auth->hasIdentity()){ 
      // send him to login 
     } 
     $user = $auth->getIdentity(); 
     if (!$user->isAdmin()){ // or however you check 
      // send him to a fail page 
     } 
    }  
} 
+0

"/ application"에 Acl.php라는 파일을 작성하면 부트 스트랩에 플러그인을 등록하여 시작할 때 초기화됩니다. – Rex89

+0

네가 어디에 넣을 지, 네가 무엇을 이름을 붙이는 지, 어떻게 등록 할 지에 대해서는 선택의 여지가 있지만. 개인적으로, 광산은 Admin_Plugin_Auth라는 관리 모듈 (파일 :'application/modules/admin/plugins/Auth.php')에있었습니다. 나는 모듈 Bootstrap이'Zend_Application_Module_Bootstrap' ('application/modules/admin/plugins' 폴더를 클래스 접두어'Admin_Plugin_'에 매핑하는 리소스 로더를 등록했습니다)을 확장했는지 확인했습니다. 그리고 모듈을 부트 스트랩에 등록했습니다 (파일 :'application/modules/admin/Bootstrap.php'). –

+0

언젠가는이 정보가 도움이 될 것입니다. 제 신청서에는 acl이 필요 없습니다. 어쨌든 고마워요. – Rex89

0

나는 1 사용자의 설정이 관리자 인 경우 내 데이터베이스에서 "is_admin"의 필드를 갖는 방법으로 이동하기로 결정했다. 나는 다음이 코드를 사용 : 이것은 그들이 관리자가 아닌 경우 관리자 영역에서 사용자를 리디렉션 그들이 관리자 있다면 그들에게 액세스 할 수 있습니다

public function init() 
{ 
    $this->auth=Zend_Auth::getInstance(); 
    if ($this->auth->getStorage()->read()->is_admin) { 
    $route = array('controller'=>'admin', 'action'=>'index'); 
    } else { 
     $route = array('controller'=>'index', 'action'=>'index'); 
    $this->_helper->redirector->gotoRoute($route); 
    } 
} 

을 .. 간단한 사용에 대한 ACL보다 구현하기 위해 많은 쉽게 내 응용 프로그램.

+0

대답으로 받아들이겠습니까? http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –