У меня есть CMS, основанная на Zend Framework. Он использует Zend_Auth
для аутентификации пользователя CMS. У пользователей CMS есть роли и разрешения, которые применяются в Zend_Acl
. Теперь я пытаюсь создать «Пользователи сайта» для таких вещей, как интернет-магазин. Для простоты я хотел бы использовать отдельный экземпляр Zend_Auth
для пользователей сайта. Zend_Auth
записывается как синглтон, поэтому я не уверен, как это сделать.
Причины, по которым я не хочу этого делать по ролям:
В этом случае вы хотите создать свой собственный класс «Auth» для расширения и удаления шаблона дизайна «singleton», который существует в Zend_Auth
Это далеко не полный, но вы можете создать экземпляр и передать ему пространство имен. Остальные публичные методы Zend_Auth должны быть хорошими для вас.
<?php class My_Auth extends Zend_Auth { public function __construct($namespace) { $this->setStorage(new Zend_Auth_Storage_Session($namespace)); // do other stuff } static function getInstance() { throw new Zend_Auth_Exception('I do not support getInstance'); } }
Затем, где вы хотите его использовать, $auth = new My_Auth('CMSUser');
или $auth = new My_Auth('SiteUser');
class App_Auth { const DEFAULT_NS = 'default'; protected static $instance = array(); protected function __clone(){} protected function __construct() {} static function getInstance($namespace = self::DEFAULT_NS) { if(!isset(self::$instance[$namespace]) || is_null(self::$instance[$namespace])) { self::$instance[$namespace] = Zend_Auth::getInstance(); self::$instance[$namespace]->setStorage(new Zend_Auth_Storage_Session($namespace)); } return self::$instance[$namespace]; } }
Попробуйте это, просто нужно будет использовать App_Auth вместо Zend_Auth везде, или App_auth на области администратора, Zend_Auth на передней панели
это мое предложение:
я думаю, что вы на самом деле должны вычислять ACL, ресурсы, роли динамически,
пример {md5 (siteuser или cmsuser + module + controller) = случайное число для каждой роли}
и простой плагин позволил бы этой роли этому регрессу
или вы можете построить как стиль разрешения unix, но я думаю, что эта идея требует многого тестирования в один прекрасный день, когда я построю один из них в ZF 🙂
я надеюсь, что моя идея поможет вам
Вы смешиваете проблемы. (не то, что я не сделал, когда я впервые столкнулся с id)
Zend_Auth отвечает на вопрос «это тот пользователь, которого он утверждает?»? Что вы можете сделать, так это добавить дополнительную информацию к вашему объекту persistence. Самый простой вариант – добавить еще один столбец в свою БД и добавить его в результат .