Лучший способ сделать это - создать свой собственный класс Controller, расширяющий CI_Controller.
В основном, когда вы говорите:
class Controller_name extends CI_Controller {}
Вы бы изменили это на
class Controller_name extends My_Controller {}
My_Controller будет выполнять аутентификацию, и если страница не требует входа пользователя, вы используете стандартный класс CI_Controller.
ОБНОВЛЕНИЕ:
Я написал это на работеи не было примеров кода, чтобы действительно показать это лучше.
Создайте MY_Controller.php
в /applications/core/
и используйте следующий код.
<?php
class MY_Controller extends CI_Controller {
function __construct() {
parent::__construct();
// Verify logged in status.
if ( ! $this->session->userdata('loggedIn') ) redirect('/login');
}
}
Затем в вашем login
контроллереВы должны установить переменную сеанса с именем loggedIn
.Обычно я устанавливаю значение этого идентификатора пользователя, чтобы быстро ссылаться на него.
Теперь, если вы хотите, чтобы любой контроллер требовал, чтобы пользователь вошел в систему, расширьте ваш новый класс MY_Controller.
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Dashboard extends MY_Controller {
/* Your Code */
}
Если у пользователя нет loggedIn
в качестве переменной сеанса, он будет перенаправлен на контроллер login
.
Надеюсь, это поможет.