2012-01-16 2 views
0

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

Вопрос в том, является ли _remap функцией наилучшего места для проверки доступа к функциям контроллера и как передать маршрутизацию обратно в CI в случае, если мы аутентифицированы?

+0

Вы хотите аутентифицировать пользователя по каждому запросу? – Dau

ответ

1

_remap не требуется для этого. Вы можете использовать его, но вам это не нужно.

Проверить доступность в методе контроллера __construct(). Вы можете получить текущий метод через $this->router->fetch_method() и пройти проверку подлинности.

Еще лучше, у вас есть все, что вам нужно, чтобы это расширило базовый контроллер (он же «MY_Controller»). Вы можете написать Auth_Controller и выполнить проверку авторизации в __construct(). Вы можете получить текущий класс через $this->router->fetch_class(), а также этот метод, просто убедитесь, что ваши контроллеры нуждаются в этом продлении Auth_Controller вместо обычного CI_Controller.

Если у них не должно быть доступа, просто перенаправьте их туда, где им нужно пойти или показать сообщение об ошибке.

+0

Удивительный! Благодаря! – Vitaly

+0

Нет проблем - я собирался опубликовать примеры, но похоже, что вы знаете, что делаете. Это имеет смысл или что-то непонятное? –

+0

Да, это достаточно хорошо. Получил это работающий :) – Vitaly

1

сделать библиотеку под названием Authentication и проверить о вашем методе в этом

вы можете получить метод и имя класса этим

$class = $this->CI->router->class; 
$method = $this->CI->router->method; 

и проверить аутентификация каждый раз, когда вы включили hooks от вашего config file, прикрепите крючок post_controller_constructor для проверки подлинности каждый раз.

+0

Хорошая альтернатива, спасибо! – Vitaly

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