Du har ramt sømmet på hovedet, men der er en lidt mere effektiv måde at gøre det på.
Udvid basecontrollerne på én måde (jeg tror oprindeligt beskrevet af Phil Sturgeon), men jeg vil opsummere her:
Se denne artikel for en meget dybdegående skrivning.
men i det væsentlige:
<?php
class MY_Controller extends Controller
{
function __construct()
{
parent::Controller();
if (! $this->session->userdata('first_name'))
{
redirect('login'); // the user is not logged in, redirect them!
}
}
}
så nu, hvis du vil begrænse adgangen, skal du blot:
class Secret_page extends MY_Controller {
// your logged in specific controller code
}
og den udvidede controller vil automatisk kontrollere, om brugeren er logget ind i konstruktøren.
med hensyn til hvordan, ville jeg sandsynligvis indstille bruger_id'et som værdien for at kontrollere, om det er sat, eller måske en bruger "gruppe" - så kan du få brugertilladelser og varierende adgangsniveauer i dit system.
håber dette hjælper lidt.
rediger
Føj dette til application/config.php
/*
| -------------------------------------------------------------------
| Native Auto-load
| -------------------------------------------------------------------
|
| Nothing to do with cnfig/autoload.php, this allows PHP autoload to work
| for base controllers and some third-party libraries.
|
*/
function __autoload($class)
{
if(strpos($class, 'CI_') !== 0)
{
@include_once( APPPATH . 'core/'. $class . EXT );
}
}
Da du bruger CI 2.0, bliver du nødt til at placere MY_Controllers i Application/CORE i stedet for biblioteker.
Min applikation/kerne ligner lidt:
Admin_Controller.php
MY_Controller.php
Public_Controller.php