2012-07-21 2 views
1

게스트 (등록되지 않음), 멤버 및 관리자의 3 가지 사용자 역할이있는 웹 사이트가 있습니다.젠드 프레임 워크 - 컨트롤러에 대한 액세스 제어

컨트롤러에 대한 액세스를 다음과 같이 제한하고 싶습니다.

AuthController -> 고객, 구성원, 관리자

AdminController -> 관리

MemberController -> 회원

Zend_Acl를 사용하지 않고 그것을 할 수있는 간단한 방법이 있나요? 실제로 Zend_Acl을 실제로 사용하는 방법을 이해하지 못합니다.

답변

1

this tutorial은 간단한 Auth & ACL 스키마를 구현하는 데 매우 유용합니다.

프런트 컨트롤러 플러그인 & 커스텀 Zend_ACL 클래스를 생성합니다.

편집 : 귀하의 코멘트에 질문에 대답하려면

당신은 액션 부분

// Add some resources in the form controller 
    $this->add(new Zend_Acl_Resource('error')); 
    $this->add(new Zend_Acl_Resource('auth')); 

    // Allow guests to see the error, login and index pages 
    $this->allow('guest', 'error'); 
    $this->allow('guest', 'auth'); 

없이 자원을 정의 할 수 있습니다 전면 플러그인의 동작을 확인하지 않는

if(!$acl->isAllowed($user->role, $request->getControllerName())) { 

나는 그것을 테스트하지는 않았지만 효과가있다.

+0

감사합니다. 링크가 멋지고 이해하기 쉽습니다. 하나의 질문. 모든 단일 컨트롤러/동작에 대해 "새로운 Zend_Acl_Resource ('auth :: login')"을 입력하는 대신에 "auth :: all"을 사용하여 컨트롤러의 모든 작업을 지정할 수 있습니까? – Ayrx

+0

@TerryChia 수정 된 답변보기 – Bogdan

0

공식 프런트 컨트롤러 플러그인에는 proposal이 있었지만 슬프게도 그다지 많이 나오지 않았습니다. 코드는 여전히 사용할 수 있으며, tutorial on the Zend DevZone blog.

ZF 2.0의 향후 변경 사항을 확인하는 데 가치가있을 수 있으며 제안서에 대한 일부 응답에 따라 액세스 파트가 변경되었을 수 있습니다.