CodeIgniter разрешает доступ только к определенным контроллерам при входе в систему

У меня есть некоторые контроллеры CodeIgniter, доступ к которым должны получать только пользователи, вошедшие в систему (т.е. где $this->session->userdata('username') не равно null). Если неаутентифицированный человек попытается получить доступ к указанным контроллерам, он должен получить:

header('location: /auth/login');

Должен быть лучший способ сделать это, чем поставить

if (!$this->session->userdata('username'))
    header('location: /auth/login');
else
{
    [rest of function]
}

перед каждой функцией контроллера...

Я знаю, что DX_Auth имеет аналогичную функциональность, но я не использую плагин аутентификации и не готов это делать.

Спасибо!
Мала


person Mala    schedule 07.01.2010    source источник


Ответы (1)


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

function className()
{
    parent::Controller();
    if(!$this->session->userdata('username')) header('location: /auth/login');
}

Это способ вызова __constructor или его эквивалента в codeigniter при создании controllers/models, или, по крайней мере, я так понял!

person johnnyArt    schedule 07.01.2010
comment
Ах, ура, приятель :) Я не думал о создании таких вещей! - person Mala; 07.01.2010
comment
Да, это работает шарм, большое спасибо! Для контроллеров, в которых ограничены только определенные функции, есть ли способ поместить это в конструктор? Или для них мне нужно просто вставить блок if/header перед функциями? - person Mala; 07.01.2010