Ben sadece emin bir kullanıcı bir eylemi gerçekleştirmeden önce doğrulanmış olduğundan emin olmak için benim site ile gitmek için bir eklenti hazırlandı. Bu eklentisi:
class Booze_Plugin_AclPlugin extends Zend_Controller_Plugin_Abstract{
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
$auth = Booze_Permissions_Auth::getInstance();
$acl = Zend_Registry::get('acl');
if(!$auth->hasIdentity())
{
$role = Booze_Permissions_Roles::GUEST;
}
else
{
$role = $auth->getUser()->role;
}
$resource = $request->getControllerName();
$privilege = $request->getActionName();
if(!$acl->isAllowed($role, $resource, $privilege))
{
Booze_Log::log("ACLPlugin: Sent to login");
$request->setControllerName('login');
$request->setActionName('index');
$request->setDispatched(false);
}
}
}
Bu uyumsuz olmayan sayfalar için iş gibi görünüyor. Ancak, bir iş, bir kontrolör uyumsuz işlevleri gerçekleştirmek için sahip. Bu, kontrolör (ilgili bölümleri) 'dir:
class AsyncController extends Zend_Controller_Action{
public function init()
{
if(!$this->getRequest()->isXMLHttpRequest())
{
$this->_forward('index', 'index');
}
$this->_helper->viewRenderer->setNoRender();
$this->_helper->getHelper('layout')->disableLayout();
}
public function addcommentAction()
{
$params = $this->getDecoded('comment', true);
$params_array = (array)$params;
$auth = Booze_Permissions_Auth::getInstance();
if(!$auth->hasIdentity())
{
$this->getResponse()->setBody("Guest");
}
$params_array['user_id'] = $auth->getUser('user_id');
$params_array['store_id'] = Booze_Storage::get('store_id');
if($this->comments->insertComment($params_array))
{
$this->getResponse()->setBody("success");
}
else
{
$this->getResponse()->setBody("CommentFail");
}
}
Ben misafir olarak imzalanan bile uyumsuz fonksiyon addcommentAction, çağırdığınızda, giriş denetleyicisi beni almaz. Ben, ancak, giriş kontrol ünitesi için html gönderiyor, ama sadece benim tarayıcıda görünmüyor ki, kundakçı dışarı bulduk. Aklımda bu uyumsuz denetleyici olduğu gerçeği ile ilgili bir şey olmalı, init, görünüm oluşturma ve düzeni kapalı. Onunla karıştırmasını denedim, ve eklenti yönlendirme her zaman işler ve kendini gösterir emin olmak için güvenilir bir yol anlamaya olamaz. Herhangi bir yardım olağanüstü olurdu.