как использовать Zend_Auth для аутентификации пользователя при загрузке с помощью ckeditor plugin pgrfilemanager

Привет, хорошие люди!

У меня есть веб-приложение (мое первое из этого типа) на основе Zend Framework 1.11.12 (обновлено с 1.10.8) с использованием структуры папок «модульного подхода», я имею в виду, что все модули находятся под application/modules . Я использовал Doctrine 1.2.4

Я также использую library папку для всех сторонних библиотек, включая ZF, кроме 2: CKEditor и PGRFilemanager . pgrfile manager для загрузки файлов в папку изображений с панели администратора. здесь есть глобальная файловая структура.

 /application /configs application.ini routes.ini /layouts /scripts /partials *.all_the_partials_files.phtml *.all_the_layouts.phtml /modules all_the_module_folders Boostrap.php /logs /library /Zend /Doctrine /SwiftMailer /Abra //where all my classes reside /Model User.php Role.php other_doctrine_entities_class /public /javascript /css /images .htaccess // added an htaccess file here /fonts `/ckeditor` a_lot_of_files_including_php_files other_folders /plugins other_folders `/pgrfilemanager` /php auth.php myconfig.php other_folders_and_files_including_php index.php .htaccess 

В момент, когда я разрабатывал этот сайт, я не использовал Zend_Acl, поэтому session_start () в /public/ckeditor/plugins/pgrfilemanager/php/auth.php работал нормально в течение некоторого времени, поскольку pgrfilemanager пришел с функцией проверки подлинности по умолчанию. но как только я начал использовать Zend_Acl, я столкнулся с такими проблемами, как Class __PHP_Incomplete_Class has no unserializer Array исключения Class __PHP_Incomplete_Class has no unserializer Array когда session_start() вызывается из файла ~~/auth.php . Первоначально я думал, что это связано с тем, что я не использовал Zend_Session но, видимо, я был скорее из-за этого объясненного здесь факта (исправьте меня, если я ошибаюсь)

Как это использовать? Спасибо за прочтение

Поскольку я нашел обходной путь об этой проблеме, я думал, что буду делиться, возможно, я получу лучшую перспективу.

В ответе для Class __PHP_Incomplete_Class has no unserializer Array становится ясным, поскольку сеанс делает то, какой формат для unserialize to значение php должен был знать определение объекта, хранящегося в сеансе.

Основываясь на структуре файла, я создал файл auth, скажем, myauth.php in /public/ckeditor/puglins/pgrfilemanager/userfiles Я буду ссылаться на этот путь: pgr/userdir

 $path = realpath("../../../../library"); set_include_path(get_include_path() . PATH_SEPARATOR . $path); require "Zend/Loader/Autoloader.php"; require_once 'Doctrine/Doctrine.php'; spl_autoload_register(array("Doctrine", "autoload"), true); $loader = Zend_Loader_Autoloader::getInstance(); $loader->registerNamespace(array("Abra_")); /*$p seem to be empty throwing error on Zend_Config_Ini but returns the config anyway.I never figured out */ $p = realpath("./../../../../application/configs/application.ini"); try { // $config = parse_ini_file($p, "production"); $config = new Zend_Config_Ini($p, "production"); $conn = Doctrine_Manager::connection($config->doctrine->dsn); $user = new Abra_Model_User(); $role = new Abra_Model_Role(); $auth = Zend_Auth::getInstance(); if(!$auth->hasIdentity()|| !in_array($auth->getIdentity()->Role->name, array("superadmin","administrator")) ){ die("Not authenticated"); } } catch (Exception $ex) { */ $p = realpath("./../../../../application/configs/application.ini"); try { // $config = parse_ini_file($p, "production"); $config = new Zend_Config_Ini($p, "production"); $conn = Doctrine_Manager::connection($config->doctrine->dsn); $user = new Abra_Model_User(); $role = new Abra_Model_Role(); $auth = Zend_Auth::getInstance(); if(!$auth->hasIdentity()|| !in_array($auth->getIdentity()->Role->name, array("superadmin","administrator")) ){ die("Not authenticated"); } } catch (Exception $ex) { } } 

в pgr/php/folders.php и pgr/php/files.php я включил

 $path = realpath("../../../../library"); set_include_path(get_include_path() . PATH_SEPARATOR . $path); 

на вершине. то я включил pgr/userfiles/myauth.php в pgr/myconfig как показано ниже

 include_once dirname(__FILE__) . '/userfiles/myauth.php'; 

Надеюсь, это поможет кому-то. благодаря