2010-11-24 4 views
1

Эй! Я очень новичок в Codeigniter, я пытаюсь защитить весь контроллер администратора. Я решил, что я начну здесь:Вход в систему для входа в систему контроллера

function Admin() 
{ 
    parent::Controller(); 
    if(!isset($_SESSION['loggedin'])){ 
     $this->login(); 
    } 
} 

но это, очевидно, не завершено. Как мне также остановить метод, который пытается запустить (т.е. index()), и я нахожусь на правильном пути здесь?

Спасибо за помощь!

ответ

1

есть

Расширение базовых контроллеров: MY_Controller.php

<?php 
class MY_Controller extends Controller { 
    function __construct() 
    { 
     parent::Controller(); 
     $user_id = $this->session->userdata('user_id'); 
     $this->data['user'] = $this->user_lib->get($user_id); 
    } 
} 
?> 

вы можете хранить все виды информации в этой конструкции. Это просто получает зарегистрированный в настоящее время идентификатор пользователя и назначает ему $data['user']. Это будет скорректировано в зависимости от того, какую библиотеку auth вы используете, но вы получаете суть. Теперь у вас есть доступ к текущему идентификатору пользователей и всем их деталям, с помощью любого контроллера, который расширяет «MY_Controller»

Теперь вы можете создать контроллер «admin» или любое количество других, чтобы ограничить доступ. как так: Admin_Controller.php

<?php 
class Admin_Controller extends MY_Controller { 
    function __construct() 
    { 
     parent::Controller(); 
     if($this->data['user']['group'] !== 'admin') 
     { 
      show_error('Error - you need to be an admin.'); 
     } 
    } 

} 
?> 

Public_controller.php

<?php 
class Public_Controller extends MY_Controller { 
    function __construct() 
    { 
     parent::Controller(); 
     if($this->data['user']['group'] !== 'member') 
     { 
      show_error('You need to login to see this page...'); 
     } 
    } 

} 
?> 

, как вы можете see..possibilities бесконечны

Так, для администратора только страниц - используйте admin контроллер только для страниц участника - общедоступный для «обычных» страниц - используйте контроллер по умолчанию.

Я свяжусь с Phil Sturgeon's статьи, как это, где я прочитал об этом сначала

0

введите код сеанса проверки в каждую функцию в контроллере администратора, которую вы хотите защитить. , что это самый простой способ сделать это ..

+0

Спасибо .... вот что я боялся. Похоже, что был бы «DRYer». – SideDishStudio 2010-11-24 06:21:05

Смежные вопросы