2014-01-30 5 views
0

Хорошо, теперь я на поток развития моего приложения с помощью CodeIgniter (начинают любить его :))Codeigniter: Лучший способ ограничить доступ

Вся моя система будет доступна только для зарегистрированных пользователей и как только они придут, система переведет их на страницу входа в систему.

Теперь я начинаю ограничивать доступ для разных групп пользователей. Итак, мой большой вопрос: какой метод будет полезен для выполнения регистрации?

  • Выполнить проверку на каждый способ управления?
  • Может непосредственно писать в файле header.php и выполнять проверку и перенаправление при необходимости?

Поскольку администратор и интерфейсный сервер будут ограничены доступом, основанным на роли пользователя, и ничто не будет доступно для гостя.

Edit:

Extreemly жаль, что я забыл упомянуть, что я использую Ion Auth библиотеку для аутентификации. Также я написал несколько помощников на основе ion auth, чтобы облегчить жизнь.

+0

см. мой ответ @ http://stackoverflow.com/questions/21451041/how-to-store-login -time-in-my-mysql-table-use-code-ignitter i t содержит пример MY_CONTROLLER и auth; я уверен, что это не то, что вам нужно, но это дает небольшую картину того, как все может случиться; – Zalaboza

ответ

3

В главном каталоге можно создать расширенный основной контроллер с именем MY_Controller.php, однако префикс должен соответствовать вашему настроенному префиксу в config.php.

В MY_Controller вы можете создать функцию с именем is_logged_in, которая проверяет, существует ли сеанс регистрации (если он основан на сеансе).

В каждом контроллере, который требует действительного сеанса входа в систему, в методе построения вы просто скажете, например, if(!$this->is_logged_in()) { redirect('/login'); }.

Причина, по которой я предпочитаю такой метод, в отличие от проверки сеанса в каждом отдельном контроллере, заключается в том, что если, скажем, имя вашего зарегистрированного индекса сеанса сессии, вам нужно только изменить зарегистрированную проверку в одном центральное место.

+0

хорошо, что я понял, переопределяет ядро ​​CI_Controller с MY_Controller и в '__construct()' Выполняю проверку для зарегистрированного пользователя? –

+0

Точно. На самом деле я сказал, что у меня есть функция 'is_logged_in', но я только что понял, что вы сказали, что каждая страница предназначена для входа в систему только для пользователей, поэтому ваш чек действительно может быть в конструкторе' MY_Controller'. – Ryan

+0

Хорошо, я попробую сейчас –

0

Если вы делаете это в своем header.php, вам нужно будет использовать несколько header.php, чтобы сделать ваши чеки. Как мне это сделать это с помощью CodeIgniter встроенный в session библиотеки, а затем использовать:

if($this->session->userdata('logged_in'){ 
    $this->model_name->function(); 
    $this->load->view("header"); 
}else{ 
    redirect("login", "refresh"); 
} 

Вы можете сделать что-то вроде этого:

$array = array(
    'logged_in'   => true, 
    'admin'    => true, 
    'some_other_thing' => false 
); 

$this->session->set_userdata('admin'. $array); 
+0

Мне очень жаль только что обновленный вопрос. Забыл упомянуть, что использование библиотеки иона для аутентификации –

1

Если он будет использоваться повторно, то почему вы просто не «Бросьте свой код в помощники и назовите его соответствующим образом .. Он также сделает ваш код чистым ...

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