你可以簡單地將Zend_Acl理解成一個權限系統,一般使用在檢查頁面是否可以進入。通常都會配合Zend_Auth一起使用,但是現在先不要將他跟Zend_Auth拉上任何關係。
1.建立資源,我們可以將他理解成為建立一個頁面的權限:$acl=new Zend_Acl();
$acl->add(new Zend_Acl_Resource('Controller_Action');
以上簡單的建立了一個資源,而我將Controller跟Action的名稱合而為一作為資源名稱,這樣可以清楚地知道這個資源是屬於那個頁面的。當然你也可以自訂其他名稱。 $acl->add(new Zend_Acl_Resource('Controller_Action');
2.建立角色,各個角色都擁有不同的權限。
$acl->addRole(new Zend_Acl_Role('guest'));
我們建立一個訪客角色guest。 3.給予角色權限。
$acl->allow('guest','Controller_Action');
設定角色guest擁有的資源,也就是可以進入什麼頁面。 4.進入頁面時的檢查。當資源及角色都已經建立完成,並且設定好角色的權限,我們就可以在進入頁面時進行權限的檢查。
if($acl->hasRole('guest') && $acl->isAllowed('guest','Controller_Action'))
{
//成功進入頁面
}else{
//沒有足夠權限進入頁面
}
{
//成功進入頁面
}else{
//沒有足夠權限進入頁面
}
5.角色跟資源的承繼。將承繼放到最後才解說的原因是想清楚解釋每個步驟的作用,以免混淆。
$acl->addRole(new Zend_Acl_Role('admin'),'guest'); //角色admin將會擁有guest的所有權限
$acl->add(new Zend_Acl_Resource('news'),'detail'); //如果擁有資源news,同時也會擁有資源detail。
$acl->add(new Zend_Acl_Resource('news'),'detail'); //如果擁有資源news,同時也會擁有資源detail。
總結
這次簡單地介紹了使用的步驟,建議你可以嘗試配合Zend_Auth設計簡單的權限系統,我們可以使用preDispatch令進入每個頁面時也會進行權限的檢查。下一章將會深入一點介紹一個簡單的權限系統。
沒有留言:
張貼留言