У меня есть набор мыльных API, которые могут выполнять такие действия, как логин, выход из системы, keepalive, доступ к другим ресурсам. Чтобы получить доступ к другим ресурсам, я должен передать идентификатор сеанса, который я получил из входа api. Сессия получает тайм-аут в 5 минут. Я смущен тем, как это сделать.
Я использую codeigniter для моего проекта, и я создал одну библиотеку с набором заданных в ней запросов на мыло api.
class Soap_api
{
function __construct()
{
define("UID", "myuser");
define("PWD", "34rf3a45575");
define("API_ENDPOINT", "http://uat-api.testingsoapapi.in/services/smp");
define("PRODUCT_CODE", "24");
$resp = $this->keepAliveLib();
if($resp['ResponseCode'] == '0')
{
define("SessionID",$resp['SessionID']);
}
}
function keepAliveLib()
{
$resp = $this->login();
return $resp;
}
function one
{
//This function needs the sessionID receieved from login function
}
function two
{
//This function needs the sessionID receieved from login function
}
Поэтому, когда доступ к любой из функций этого класса, конструктор вызывает keepAliveLib, который вызывает функцию входа в систему, которая находится в этом классе, и возвращает идентификатор сеанса в конструкторскую функцию и устанавливает ее как глобальную константу sessionID. Так что функция, которую я вызывал будет использовать идентификатор сеанса, который создается как константа.
Является ли это стандартным способом вызова API, которые ретранслируются на сеансах? Функция входа вызывается, когда вызывается функция, и создает другой идентификатор сеанса. В библиотеке есть функция keepAlive
которая может использоваться для поддержки сеанса, но вместо этого использования keepAlive, Im регистрируется каждый раз, когда функция в этом доступна.
Что-то не так в этом потоке? Можно ли это сделать другими способами?
хорошо, я, вероятно, не понимаю этого полностью, но будет ли это работать?
$resp = $this->keepAliveLib();
if($resp['ResponseCode'] == '0') {
$this->sessionid = $resp['SessionID']); }
else { // fail gracefully }
$this-> sessionid теперь доступен для любого метода в контроллере.