2015-04-20 4 views
0

Am написание API для приложения IOS У меня есть некоторые опасения по поводу обработки сессии для приложения IOSCodeigniter API сессия

Когда пользователь Войти с айфона, мне нужно передать идентификатор сессии в качестве ответа авторизации и использовать эту сессию идентификатор в последующих вызовах API для проверки пользователя,

То, что я сделал в моем контроллере АФИ получить идентификатор сессии и сохранить его в массив сессии наряду с подробной информацией пользователя и передать идентификатор сессии в качестве ответа

$session = $this->session->userdata('session_id'); 
     $user_array = array(

    'email' => $user->email,  
     'session_id'=>$session 
        ); 
     $this->session->set_userdata('logged_in', $user_array); 

    $output = array(
          'code'=>200,        
          'user'=>$user, 
          'session_id'=>$session 
        ); 
        $this->output 
         ->set_content_type('application/json') 
         ->set_output(json_encode($output)); 

Для дальнейших вызовов api я получу session_id как параметр,

Я проверил его действительный раздел или не использовал следующее. код

$session_id = $this->input->get('session_id', TRUE); 
     if($session_id){ 
      if($this->session->userdata('logged_in')){ 
       $user = $this->session->userdata('logged_in'); 
       if($user['session_id'] == $session_id){ 
       // valid session 
} 

Это хорошо работает при тестировании с почтальоном.

Но я не уверен, что это правильный способ обработки сеанса с вызовами API.

Будет ли работать то же самое при запуске приложения IOS?

заранее спасибо

ответ

0

Вы используете метод апите REST, который является лицом без гражданства, так что сессии не будет поддерживаться при вызове из приложения IOS. Каждый вызов, который вы делаете из приложения, будет иметь новый сеанс.

Вы должны использовать SOAP в качестве веб-службы, если вам действительно нужно, чтобы сеанс поддерживался во время вызова API.

Для получения дополнительной информации, пожалуйста, проверьте на If REST applications are supposed to be stateless, how do you manage sessions?

Смежные вопросы