Po uzyskaniu _construct
kontrolera, można sprawdzić, czy jest on zalogowany, czy nie, od początku. Jeśli nie są, wyślij je na ekran logowania:
function __construct() {
parent::__construct();
if (!$this->session->userdata('logged_in')) {
redirect('YourLoginController');
}
}
To zdecydowanie powinno być w kontrolerze.
Można także utworzyć kontroler podstawowy, aby rozszerzyć standardową wersję CI_Controller
, zapoznaj się z koncepcją MY_Controller
w dokumencie. Tam można dodać metodę, która sprawdza uwierzytelnienia i przekierowuje jeśli nie, a następnie połączyć je w swoich metodach kontrolerów, które wymagają uwierzytelnienia:
class MY_Controller extends Controller{
public $data = array();
function _construct() {
parent::_construct();
$data['logged_in'] = $this->session->userdata('logged_in');
}
function authenticated() {
if (!$this->data['logged_in']) {
redirect('YourLoginController');
}
}
}
, a następnie w kontrolerze:
class Some_Controller extends MY_Controller {
function _construct() {
parent::_construct();
}
// If a method requires authentication
function someMethod() {
$this->authenticated(); //This does nothing if logged in
//It redirects to login if not logged in
//Your stuff.
}
//If a method DOESN'T require login, your $this->data to
//pass to the view has already been started from MY_Controller
//so append the display content you need to that array and
//then pass it to the view
function someOtherMethod() {
$this->data['somecontent'] = "I'm content";
$this->load->view('someView',$this->data);
}
}
Używanie koncepcja utworzona z poziomu someOtherMethod()
można następnie wykorzystać zmienną $logged_in
w celu zmiany zawartości na podstawie statusu uwierzytelniania użytkownika.