【问题标题】:Codeigniter RESTServer sessionCodeigniter RESTServer 会话
【发布时间】:2016-08-18 13:26:03
【问题描述】:

我正在使用 CodeIgniter 和来自 https://github.com/chriskacerguis/codeigniter-restserver 的 RestServer 实现构建一个 API

我想使用“会话”身份验证模式,所以我在 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 在 hooks 中定义,并且 print_r($data))

但是.. 当我运行一个扩展 REST_Controller 的控制器时,我总是得到一个 {"status":false,"error":"Unauthorized"} 错误。

我搜索了很多,但找不到解决方案(或者没有人使用“会话”身份验证方法?),但也许这里有人知道解决方案?

谢谢!

编辑:我的 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 中添加了“会话”

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

【问题讨论】:

    标签: php codeigniter session codeigniter-restserver


    【解决方案1】:

    这不是错误

    你必须在

    中写入会话变量
    $config['auth_source'] = '';
    

    我写了这段代码并解决了问题(erplace above to down code in config/rest.php)

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

    【讨论】:

      【解决方案2】:

      测试一下。

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

      然后你的配置例如

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

      【讨论】:

      • 嗯,它看起来正在工作。我想知道这有多安全?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-28
      • 2013-10-21
      • 2014-10-31
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      相关资源
      最近更新 更多