Codeigniter RESTServer 会话
Codeigniter RESTServer session
我正在使用 CodeIgniter 和来自 https://github.com/chriskacerguis/codeigniter-restserver
的 RestServer 实现构建一个 API
我想使用 'session' 身份验证模式,所以我在 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"} 错误。
我搜索了很多,但找不到解决方案(或者没有人使用 'session' auth 方法?),但也许这里有人知道解决方案?
谢谢!
编辑:我的 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);
}
}
编辑 2:autoload.php
我在 config/autoload.php
中添加了 'session'
$autoload['libraries'] = array('database','session');
测试这个。
$user = array(
"id" => "1",
"first_name" => "First",
"insertion" => "",
"last_name" => "Last"
);
$this->session->userdata = $user;
然后你的配置例如
$config['auth_source'] = 'last_name';
这不是错误
你必须在
中写入会话变量
$config['auth_source'] = '';
我写了这段代码并解决了问题(将上面的代码替换为 config/rest.php 中的代码)
$config['auth_source'] = '__ci_last_regenerate';
我正在使用 CodeIgniter 和来自 https://github.com/chriskacerguis/codeigniter-restserver
的 RestServer 实现构建一个 API我想使用 'session' 身份验证模式,所以我在 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"} 错误。
我搜索了很多,但找不到解决方案(或者没有人使用 'session' auth 方法?),但也许这里有人知道解决方案?
谢谢!
编辑:我的 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);
}
}
编辑 2:autoload.php 我在 config/autoload.php
中添加了 'session'$autoload['libraries'] = array('database','session');
测试这个。
$user = array(
"id" => "1",
"first_name" => "First",
"insertion" => "",
"last_name" => "Last"
);
$this->session->userdata = $user;
然后你的配置例如
$config['auth_source'] = 'last_name';
这不是错误
你必须在
中写入会话变量$config['auth_source'] = '';
我写了这段代码并解决了问题(将上面的代码替换为 config/rest.php 中的代码)
$config['auth_source'] = '__ci_last_regenerate';