CI: иногда случайным образом появляется ошибка Ion Auth Error, и я не могу понять, почему

Я получаю следующую ошибку при использовании Ion Auth с Code Igniter 2.0 и PHP 5.2

ErrorException [ Notice ]: Undefined property: Practice::$ion_auth
SYSDIR/core/Model.php [ 50 ]

и вот код этой строки:

45      * @access private
46      */
47     function __get($key)
48     {
49         $CI =& get_instance();
50         return $CI->$key;
51     }
52 }
53 // END Model Class
54 
55 /* End of file Model.php */ 

Странная часть этой ошибки заключается в том, что она появляется, когда я пытаюсь получить доступ к «ограниченной» странице без предварительного перехода на неограниченную страницу в том же домене. То есть, если я открою свой браузер и наберу example.com/restricted - я получу ошибку. Но если я наберу example.com/login и ТОГДА (даже если я не войду в систему должным образом) перейду на example.com/restricted, он либо впустит меня, либо перенаправит меня правильно (в зависимости от того, действительно ли я вошел в систему).

Я не могу понять для жизни меня, что это такое, что вызывает эту проблему. Вот пример конструкторов для некоторых моих контроллеров, использующих Ion Auth Library:

class Home extends CI_Controller {

    function __construct() {
        parent::__construct();
        $this->load->helper('url');
        $this->load->library('firephp');

        //ION
        $this->load->library('Ion_auth');
        $this->load->library('session');
        $this->load->library('form_validation');
        $this->load->database();
    }

и

class Practice extends CI_Controller {

    var $user;
    var $game;

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

        // ION Auth
        $this->load->library('Ion_auth');
        $this->load->library('form_validation');
        $this->load->library('session');

        // Defaults
        $this->load->helper('url');
        $this->load->library('firephp');

        // Models
        //$this->load->model('Ion_auth_model');
        //$this->load->model('Player');
        $this->load->model('Practice_Game');



        // User must be logged in to use this controller
        // If user is logged in then we get his info as a class variable
        if ($this->ion_auth->logged_in()) {
            $this->user = $this->ion_auth->get_user($this->session->userdata('user_id'));
        } else {

person user721044    schedule 22.04.2011    source источник
comment
Вы можете попробовать отправить это как проблему на Github (в случае, если это ошибка), поскольку автор кажется довольно активным и может ответить вам быстрее, чем ответ отсюда. github.com/benedmunds/CodeIgniter-Ion-Auth/issues   -  person Fuseblown    schedule 23.04.2011


Ответы (1)


У меня была такая же проблема. Проблема возникает, когда запомненный логин автоматически входит в систему, а ion auth пытается использовать некоторые еще не загруженные свойства.

Вы можете посмотреть на этот запрос на включение и следующий коммит:

https://github.com/benedmunds/CodeIgniter-Ion-Auth/pull/46 https://github.com/benedmunds/CodeIgniter-Ion-Auth/commit/ba6d09299cd7469835ab3ad7fb1a4333de88d468

person zbrox    schedule 22.06.2011