Сеанс Codeigniter RESTServer

Я создаю API с CodeIgniter и реализацией RestServer из https://github.com/chriskacerguis/codeigniter-restserver

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

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

в config/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);
    }
}

Сеанс хранится в базе данных и содержит данные от $user. pr повторяет данные (pr определен в ловушках и выполняет print_r($data))

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

Я много искал, но не могу найти решения для этого (или никто не использует метод аутентификации «сеанс»?), но, может быть, кто-то здесь знает решение?

Спасибо!

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 Я добавил "сеанс" в config/autoload.php

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

person NVO    schedule 25.04.2016    source источник


Ответы (2)


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

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

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

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

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

person Emerson ñahuinlla velasquez    schedule 12.06.2016
comment
Хм, похоже, это работает. Интересно, насколько это безопасно? - person NVO; 13.06.2016

это не ошибка

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

$config['auth_source'] = '';

я пишу этот код и решаю проблему (замените приведенный выше код на нижний в config/rest.php)

$config['auth_source'] = '__ci_last_regenerate';
person pirooz jenabi    schedule 23.01.2018