사용자와 회사가 가입 할 수있는 포털을 만들고 있습니다. 사용자는 독립적이거나 회사에서 일할 수 있습니다. 유형에 관계없이 모든 사용자가 사용할 수있는 기본 액세스가 있습니다 (독립적이거나 회사와 연결되어 있음). 독립적 인 사용자가 사용할 수있는 몇 가지 기능이 있지만 사용자가 회사 아래에있는 경우 회사 관리자는 특정 기능에 대한 액세스를 허용하거나 거부 할 수 있습니다. Zend_Acl을 사용하여 어떻게 관리 할 수 있습니까?zend acl 다중 액세스 목록/레벨
1
A
답변
1
ACL의 조건이 있습니다.
내 ACL (플러그인을 통해)을 선언 한 파일에서 다음 선언이 있습니다. Acl_AdminCanAccessUsers
은 Zend_Acl_Assert_Interface
이고 TRUE 또는 FALSE을 반환합니다. 여기에서는 Request 객체를 생성자에 전달합니다. 이제
// Complex function to see if the current user can create/edit the desired user account.
$acl->allow('client', 'user', array('edit','create'), new Acl_AdminCanAccessUsers($this->_request));
당신은 그들이 isAdmin이있는 경우 여기에 우리가 사용자 레코드에 대한 DB를 확인하고 요청 매개 변수로 비교 또는 확인되어 볼 수 있듯이 이제 Acl_AdminCanAccessUsers
<?php
class Acl_AdminCanAccessUsers implements Zend_Acl_Assert_Interface
{
public function __construct($request) {
$this->request = $request;
}
public function assert(Zend_Acl $acl,
Zend_Acl_Role_Interface $role = null,
Zend_Acl_Resource_Interface $resource = null,
$privilege = null)
{
/**
* Can only test when trying to edit a user account
*/
if ("edit" != $privilege) {
return TRUE;
}
$identity = Zend_Auth::getInstance()->getIdentity();
/**
* Get the id from the URL request
*/
$id = $this->request->getParam('id');
/**
* Get user account from DB
*/
$user = Doctrine_Core::getTable('User')->find($id);
// Are they editing their own account? Give them a pass
if ($identity->user_id == $user->user_id) {
return TRUE;
}
// If they don't have the isAdmin flag set to yes on their account
// Then we'll just deny them immediately
if ($identity->isAdmin) {
return TRUE;
}
return FALSE;
}
}
살펴 보자 Zend_Auth ID로 설정된 플래그. 역할, 자원 및 권한 이상으로 액세스 할 수있는 경우 ACL에 대한 많은 조건부 검사를 수행 할 수 있습니다.
해피 코딩!
관련 문제
- 1. Zend Acl in Service Layer/Navigation
- 2. Zend Acl - 모듈, 컨트롤러, 액션 및 모델
- 3. Zend Framework의 다중 구성
- 4. Mercurial : 웹 액세스 방지 Acl 확장 샘플
- 5. Zend Framework 다중 테이블 쿼리
- 6. zend valid 다중 선택 상자
- 7. Zend : ACL 및 Auth from inheritance (합성이 아님)
- 8. CakePHP ACL 사용 사례
- 9. ASP.NET MVC의 ACL
- 10. SQLite 다중 프로세스 액세스
- 11. 메모리에 다중 스레드 액세스
- 12. 액세스 : 다중 값 필드
- 13. Mercurial의 ACL
- 14. CakePHP의 ACL
- 15. 다중 ACL 권한이있는 동일한 호스트 및 사용자 이름 mySQL
- 16. Mercurial ACL 설정
- 17. FileIOPermissionAccess 및 FileIOPermission의 ACL
- 18. Linux에서 ACL 쿼리
- 19. CakePHP Acl 문제
- 20. Java에서 Windows ACL 읽기
- 21. 은 zend auth store에 다중 값의
- 22. Zend Framework : 다중 언어를위한 복잡한 경로
- 23. Zend 유효성 검사 다중 선택 값
- 24. Zend DB 다중 테이블 조인을 사용하여 선택
- 25. Zend Lucene은 다중 값 필드를 지원합니까?
- 26. zend form 다중 체크 박스 이름 지정
- 27. cakephp acl aros_acos paradox
- 28. CakePHP acl lists
- 29. Zend Acl - 어설 션이 acl 규칙이 false를 반환 할 때 권한에 대한 액세스를 허용 할 수 있습니까?
- 30. 액세스 제어 목록 (ACL)보다 "더 나은"것이 있습니까?
먼저 Zend_Acl 소개를 읽으셨습니까? 그리고 당신은 어떻게하면 당신을 관리 할 수 있는지 모르십니까? http://framework.zend.com/manual/en/zend.acl.introduction.html –
db에 acl (roles, resources & permissions/mode)을 저장하고 있으며 두 개의 테이블 그룹이 있습니다. 하나는 사이트 관련 작업을 처리하는 반면 2 번은 회사 관리자가 제어하는 액세스를 처리하는 것입니다. 그렇다면 두 가지 유형의 ACL을 어떻게 관리 할 수 있습니까? 매뉴얼에 제공된 세부 사항은 데이터베이스를 사용하여 ACL을 관리하는 방법을 다루지 않습니다. 나는 이것을 달성 할 수 있었지만 여러 유형의 ACL에 관한 약간의 지침이 필요하다. – Bryan