0
私は私のACLのコンフィグを保存するためにXML
を使用して、ロールに&リソースを解析するためにZend ACL
ライブラリを拡張し、その作業偉大います。Zend Frameworkの2、
以下は私のACL.XML
<?xml version="1.0" encoding="UTF-8"?>
<permissions>
<roles>
<role name="guest" />
<role name="user" inherits="guest" />
<role name="admin" inherits="user" />
</roles>
<resources>
<module name="account" allow="user">
<controller name="account\controller\account" allow="user">
<action name="login" deny="admin" />
</controller>
</module>
<module name="album" allow="user">
<controller name="album\controller\album" allow="user">
<action name="index" allow="user" />
<action name="add" allow="admin" />
</controller>
</module>
<module name="application" allow="user">
<controller name="application\controller\index" allow="user">
<action name="index" allow="user" />
</controller>
</module>
</resources>
</permissions>
、現在MvcEvent::EVENT_DISPATCH
イベントを経由して呼ばれている私のModule.php
コード、私は(サービスマネージャから)私のACLクラスをキャッシュするにはどうすればよい
$serviceManager = $event->getApplication()->getServiceManager();
$configCache = simplexml_load_file(__DIR__.'/config/acl.xml');
$serviceManager->get('memcache')->setItem('cacheXml', $configCache);
//print_r($serviceManager->get('memcache')->getItem('cacheXml'));
$this->_acl = $serviceManager->get('Acl');
$this->_acl->initAcl($configCache);
if (! $this->_acl->_isAllowed('user', $event->getRouteMatch())) {
$url = $event->getRouter()->assemble(array('action' => 'index'), array('name' => 'application'));
$response = $event->getResponse();
$response->getHeaders()->addHeaderLine('Location', $url);
$response->setStatusCode(302);
$response->sendHeaders();
exit;
} else {
echo 'Access granted :) ';
}
またはその他でありますコードがより永続的かつ最適化されるようにすることを意味します。私のcaching
にmemcache
を使用しています。
私は今memcacheとそのうまく動作しているACLをキャッシュしていますが、私のアプローチをポストしています。あなたも試してみてください –