Все функции администратора / пользователя проверяют, вошел ли он в систему. Как этого избежать? - PullRequest
0 голосов
/ 06 марта 2011

Я очень, очень новичок в MVC (только что начался вчера), поэтому этот вопрос, вероятно, глуп, но мне нужно знать, как автоматически проверять, вошел ли пользователь в мои функции, используемые в моделях admin / user. *

Я могу поместить проверку в конструкцию, это помогло бы, но у меня есть несколько моделей, и, возможно, есть какой-то еще лучший способ. Надеюсь, вы лучше поймете, чего я хочу, увидев структуру и код моей папки. Да, и кстати - я использую Code Igniter 2.0

Папка:

controllers/
../admin/
../../item.php
../../cat.php

Давайте посмотрим мой item.php файл ...

<?php

class Item extends CI_Controller
{

    function Index()
    {

        //Checking if admin is logged in on every function is bad

        /* 
         * Is it possible to somehow make all admin functions go through
         * some kind of Admin class that will check automatically?
        */
        $isLogged = $this->session->userdata('is_logged_in');

        if ($isLogged == true)
        {
            $this->load->view('admin/item/main');
        }
        else
        {
            $this->load->view('admin/login');
        }
    }

    function Add()
    {
        $this->load->view('admin/item/add');
    }

    function Edit()
    {
        $this->load->view('admin/item/edit');
    }

    function Delete()
    {
        $this->load->view('admin/item/delete');
    }
}

Я надеюсь, что это простой вопрос, заранее спасибо :)

Ответы [ 3 ]

1 голос
/ 06 марта 2011

Создайте новый класс, например, My_Controller расширяет Ci_Controller и записывает в него некоторый код проверки подлинности ... в файле контроллера просто расширяйте My_Controller

1 голос
/ 06 марта 2011

Я бы реализовал функцию входа в систему в CI_Controller.Затем я бы установил защищенную переменную в Item protected $loginRequired = true;.

В функции __construct () или Item () я бы вызвал parent::isLoginRequired($this->loginRequired), который проверяет, требуется ли вход в систему.также перенаправить на определенную страницу входа с параметром, который перенаправляет пользователя обратно на страницу, на которой он должен быть зарегистрирован.

0 голосов
/ 08 марта 2011

что я обычно делаю, - как рекомендует Teeed - создайте свой собственный класс контроллера, который находится между CI_Controller и каждым контроллером, который вы можете создать.

В этом классе (MY_Controller) вы можете создать модель, которая обрабатывает всепользовательские данные и логика (загрузка данных сеанса, выполнение определенных проверок и т. д.) и, наконец, установка этих результатов в качестве переменных класса, так что в итоге вы получите:

$this->isLogged ; $this->isPaying ; $this->isPlatinumMember ; и т. д.

в любом из ваших классов, начиная с MY_Controller

, что позволяет очень легко проверить любое условие в любом из ваших контроллеров.

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