Code Igniter 2 - контроллер / переопределение метода - PullRequest
0 голосов
/ 16 августа 2011

Если пользователь не вошел в систему, я хотел бы переопределить существующий контроллер и вызвать аутентификацию / вход в систему вместо сохранения URI браузера в такте.(Каждый пользователь должен войти в систему, чтобы использовать сайт)

Я пробовал ловушку предварительного контроллера, но это слишком рано.К этому моменту библиотека auth не была создана.Хук пост-контроллера слишком поздний, поскольку был создан целевой контроллер.

Редактирование конструктора библиотеки также кажется бессмысленным, так как оно уже создано .. Так что я немного застрял ..

Есть идеи, пожалуйста?:) ..

Спасибо

Ответы [ 3 ]

4 голосов
/ 26 августа 2011

Я бы переопределил контроллер по умолчанию и расширил бы каждый контроллер.Создайте новый файл: ./app/core/MY_Controller.php со следующим кодом:

class Secure_Controller extends CI_Controller {

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

        /* replace this code with yours */
        if( !$this->session->userdata('logged_in') ) {
            redirect(base_url() . 'login', 'refresh'); // your login url
        }
    }
}

Затем используйте этот код в каждом контроллере, который должен быть доступен зарегистрированным пользователям

class Main extends Secure_Controller {
0 голосов
/ 16 августа 2011

Возможно, ответ на этот вопрос будет для вас одинаковым? CodeIgniter разрешает доступ к определенным контроллерам только при входе в систему

(Если так, не забудьте заменить "function className ()" на "function __construct ()" и "parent :: Controller ();" на "parent :: __ construct ();")

0 голосов
/ 16 августа 2011

Рассматривали ли вы просто сохранение URI во flashdata, перенаправление посетителя на другой контроллер (страницу входа) и затем просто помещение реферера в скрытое поле формы? Я делаю то же самое с одним из моих сайтов, используя Codeigniter, и он работает нормально. Разница лишь в том, что URI не поврежден во время этого процесса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...