2012-01-16 1 views
0

Я использую NuSoap для реализации сервера api. SOAP API общественность может иметь такой метод, как:Что такое хороший способ передать информацию аутентификации API-методам в PHP NuSoap?

function createComment(articleID, content); 

Это в идеале создать комментарий по данной статье, и приписывать его к пользователю, который был идентифицирован.

Аутентификация обрабатывается через http auth. Таким образом, объект nusoap_server имеет пользовательскую информацию.

Как canCom могут получить доступ к этой информации? Он ничего не знает о сервере. Я хотел не помещать информацию пользователя в глобальное пространство, но я начинаю думать, что нет другого простого способа.

Есть ли способ, позволяющий публичной подписи для метода оставаться указанным выше, в то время как метод реализации имеет дополнительные аргументы (информация пользователя)?

ответ

1

SoapServer предназначен для обеспечения возможности вызова функции w/параметров удаленно. Вызываемая функция не имеет никакой информации о SoapServer, обрабатывающей сообщение, чтобы это произошло - все, что он видит, - это передать этот параметр. Поэтому, если вы не хотите добавлять учетные данные пользователя в качестве фактических параметров вызова функции, вам нужно будет сделать что-то вроде регистрации учетных данных globaly. Это не обязательно должно быть в глобальной области. Он может быть зарегистрирован в некотором значении экземпляра шаблона реестра.

+0

Это то, что я закончил делать. Я надеялся сохранить все немного аккуратнее и избегать глобалов, но это было просто непрактично. Мои функции реализации живут внутри класса. У каждого из них есть аргумент для параметров AUTH. Затем я написал глобальные функции, которые его завернули. Каждая глобальная функция обращается к «зарегистрированному» объекту auth и передает его функции реализации. Увы, если у php были декораторы, это решение было бы еще проще. – Dave

+0

Могу ли я увидеть код? благодаря – butching