Получение сохраненных данных Zend_Auth извне проекта zend (во внешнем не-zend-проекте)

Я работаю над проектом Zend, в который мне нужно включить другой проект, не использующий ZF. Этот другой проект хранится в общедоступном каталоге в папке проекта zend.

Для этого другого проекта мне нужны logindata из проекта zend (для этого используется zend auth). Я думаю, есть два способа добиться этого.

  1. Просто получите сохраненную переменную сеанса входа в систему. Но где / какая переменная?
  2. Или попробуйте получить данные с помощью методов zend в другом проекте. Но как? Без изменения структуры этого другого проекта.

Или, может быть (возможно) есть другое / лучшее решение ?!

Надеюсь, это ясно. Tnx


person Tim    schedule 25.07.2011    source источник


Ответы (2)


$authNamespace = new Zend_Session_Namespace('Zend_Auth');
$authNamespace->user = "myusername";

Просто include pathToZendProjectDirectory\Zend\Session.php из вашего "nonzend" проекта

person SMka    schedule 25.07.2011
comment
Tnx за ответ. Я пробовал это решение, но сервер не находит требуемых внутри Session.php. Причина (я предполагаю), что путь к файлам require (require_once 'Zend / Session / Abstract.php';) всегда находится в каталоге Zend. Если я изменю все пути на относительные, это может сработать, но это большая работа. :) Должны быть другие решения, чтобы решить эту проблему. - person Tim; 25.07.2011
comment
Если вы добавите каталог библиотеки Zend в свой путь включения в этом другом приложении, тогда вы можете просто потребовать Zend / Session / Namespace.php, и ZF сам найдет все остальные классы. А еще лучше вы можете настроить автозагрузчик. - person Tim Fountain; 25.07.2011
comment
Начинаю чувствовать себя немым. ^^ Мой «не-zend» проект находится в папке в общей папке zendproject. Итак, мой путь включения к Session.php - '../../library/Zend/Session.php' или он должен быть абсолютным? Я тоже пробовал это, но все равно проект не может использовать ZF для поиска требований. - person Tim; 25.07.2011
comment
@Tim Fountain понял это: недостаточно просто позвонить require_once '/path/to/Zend/Session.php';. Вы захотите добавить папку библиотеки (родительскую для папки Zend) в include_path в проекте, отличном от ZF. Затем, когда вы вызываете require_once Zend/Session.php, все последующие включения / требования файлов Zend будут работать. - person David Weinraub; 25.07.2011
comment
Tnx все работает. Для тех, кто просто хочет получить сеанс (без помощи zf), обратите внимание на массив $ _SESSION ['Zend_Auth']. - person Tim; 26.07.2011
comment
Привет, @David Weinraub, меня очень интересует это решение. Моя проблема заключалась в том, что мое приложение zf использует ckeditor с pgrfilemanager в нем. мне нужно защитить доступ к pgrfilemanager с помощью Zend_Auth. Я хотел бы прочитать ваши предложения. Благодарность - person black sensei; 19.08.2012
comment
@blacksensei: Я не очень хорошо знаком с обоими пакетами, но применяется общий принцип: лучше всего поместить каталог Zend в каталог, который находится в include_path, определенном вашим приложением, и использовать Zend_Loader_Autoloader. Перемещаете ли вы свой Zend каталог или изменяете свой include_path так, чтобы он указывал на его родительский объект, конечно, зависит от вас. Удачи! - person David Weinraub; 20.08.2012

Данные для входа находятся в переменной SESSION. Но мы не можем получить доступ к данным сеанса напрямую вне проекта, потому что SESSION содержит некоторые объекты Zend. Когда мы запускаем сеанс, он выдает ошибку __PHP_Incomplete_Class не имеет десериализатора. Чтобы это преодолеть, добавьте код в начало страницы.

function __autoload($class) { // required files load automatically
  require_once "pathToZendProjectDirectory/PathToZendLibrary/$class.php";
}
person Mahesh kumar m m    schedule 04.05.2018