Как реализовать безопасный вход / выход из системы в Codeigniter? - PullRequest
0 голосов
/ 27 сентября 2011

Я делаю защищенный вход в систему, которую создаю с помощью CI, так как должен существовать административный контроль над системой.

Мой подход состоял в том, что я сделал файл в каталоге application / core с именем MY_System.php, где я получил эту строку кода:

class MY_System extends CI_Controller
{
 function __construct()
 {
    parent::__construct();

 }
}

Тогда у меня также есть Admin_Controller.php, где я получил этот код:

class Admin_Controller extends MY_System
{

function __construct()
{
    parent::__construct();

    $this->is_logged_in();  
}

function is_logged_in()
{
    $is_logged_in = $this->session->userdata('is_logged_in');

    if(!isset($is_logged_in) || $is_logged_in != true)
    {
        redirect(base_url(). 'login');
    }
}
}

2 файла выше сохранены в основной папке фреймворка.

Находясь в каталоге контроллеров системы, я получил несколько контроллеров, скажем, Person в том случае, когда у меня есть этот код:

class Person extends Admin_Controller
{
     function __construct()
     {
         parent::__construct();
     }
}

Я считаю, что таким образом, когда бы ни были страницы системы, которые должны быть ограничены, я бы использовал Admin_Controller в качестве родителя классов, чтобы пользователи не могли напрямую получить доступ к страницам.

Теперь, моя проблема в том, что, как я нажму кнопку «Выйти», сеанс будет уничтожен, и данные пользователя будут очищены, таким образом, пользователь должен быть перенаправлен на страницу входа, но это не происходит, потому что всякий раз, когда я нажимаю кнопка «Назад» браузера сразу после того, как я нажму кнопку «Выйти», предыдущая страница, на которой находился пользователь, все равно будет отображаться, но когда я нажимаю ссылки на этих страницах, это время, когда пользователь будет перенаправлен на страницу входа. Что я хочу, так это то, что после нажатия кнопки «Выйти» и если он / она пытается и нажимает кнопку «Назад» браузера, он / она должен быть перенаправлен на страницу входа в систему.

Кто-нибудь знает решение моей проблемы? Любая помощь приветствуется. Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 27 сентября 2011

Попробуйте добавить следующий заголовок HTTP на свои страницы:

Cache-Control   no-cache, no-store, must-revalidate

Это заставит ваш браузер повторно загрузить страницу (= повторно запустить ваш контроллер, который должен проверить переменную is_logged_in и перенаправить на страницу входа)

0 голосов
/ 27 сентября 2011

Попробуйте вместо этого:

redirect(site_url('login'), 'refresh');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...