2016-04-25 4 views
0

Я построения API с CodeIgniter и реализации RestServer от https://github.com/chriskacerguis/codeigniter-restserverCodeigniter RESTServer сессия

Я хочу использовать режим проверки подлинности «сеанса», поэтому я установить это в конфиге/rest.php:

$config['rest_auth'] = 'session'; 
$config['auth_source'] = 'userdata'; 

в конфигурации/config.php:

$config['sess_driver'] = 'database'; 
$config['sess_cookie_name'] = 'ci_session'; 
$config['sess_expiration'] = 7200; 
$config['sess_save_path'] = 'ci_sessions'; 
$config['sess_match_ip'] = FALSE; 
$config['sess_time_to_update'] = 300; 
$config['sess_regenerate_destroy'] = FALSE; 

у меня есть Auth контроллера, которые имеют следующий код:

class Auth extends My_Controller 
{ 

    public function __Construct(){ 
     parent::__construct(); 

    } 

    public function index(){ 


     $user = array(
      "id" => "1", 
      "first_name" => "First", 
      "insertion" => "", 
      "last_name" => "Last" 
     ); 

     $this->session->userdata = $user; 

     pr($this->session->userdata); 
    } 
} 

Сессия хранится в базе данных и содержит данные от пользователя $. pr echos данные (pr определяется в hooks и делает print_r ($ data))

Но .. когда я запускаю контроллер, который расширяет REST_Controller, я всегда получаю {"status": false, "error" : «Несанкционированный»}.

Я много искал, но я не могу найти решение для этого (или никто не использует метод 'session' auth?), Но, возможно, кто-то здесь знает решение?

Спасибо!

EDIT: Контроллер для одного из моих функций API:

class Club extends REST_Controller 
{ 
    function __construct() 
    { 
     parent::__construct(); 
     $this->load->model('Club_model');   
    } 

    public function index_get(){ 
     if(!$this->get('id')){ 
      $clubs = $this->Club_model->get_all_clubs(); 
     }else{ 
      $clubs = $this->Club_model->get_club($this->get('id')); 
     } 

     if($clubs){ 
      $this->response($clubs, 200); 
     }else{ 
      $this->response(null, 404); 
     } 
    } 

EDIT 2: autoload.php я добавил 'сеанс' в конфиге/autoload.php

$autoload['libraries'] = array('database','session'); 

ответ

1

Проверьте это.

$user = array(
     "id" => "1", 
     "first_name" => "First", 
     "insertion" => "", 
     "last_name" => "Last" 
    ); 

    $this->session->userdata = $user; 

Тогда ваш конфиг, например

$ конфиг [ 'auth_source'] = 'last_name';

+0

Хм, похоже, что это работает. Мне интересно, насколько это безопасно? – NVO

0

это не ошибка

вы должны написать переменную сеанса в

$config['auth_source'] = ''; 

я пишу этот код и решить проблему (erplace выше, чтобы вниз кода в конфигурации/rest.php)

$config['auth_source'] = '__ci_last_regenerate'; 

Дополнительная информация: piero.ir

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