Лучшее место для проверки входа в систему - Codeigniter / PHP - PullRequest
2 голосов
/ 15 марта 2011

В настоящее время я использую следующее для проверки того, что пользователь вошел в систему:

function only_a_loggedin_user_can_do_this()
{
    if($user_is_logged_in)
    {
       do something that only users can do
    }
    else
    {
        redirect('/login_page/');
    }
}

но если в моем контроллере много функций, то задница - писать или вносить изменения.

Какой лучший способ добиться того, чего я хочу, но более простым способом, который легче обновлять. Я думал о нижеследующем,

function check_if_logged_in()
{
    if($user_is_logged_in)
    {
       function only_a_logged-in_user_can_do_this()
       {
       }

       function or_this()
       {
       }

    }
    else
    {
        redirect('/login_page/');
    }
}

но это будет означать добавление чего-либо в строку URI, например

www.example.com / index.php / check_if_logged_in / only_a_logged-in_user_can_do_this /

Какой лучший способ реализовать это?

Ответы [ 2 ]

4 голосов
/ 15 марта 2011
   function only_a_logged-in_user_can_do_this()
   {
     check_if_logged_in();
     // do stuff

   }

   function or_this()
   {
     check_if_logged_in();
     // do stuff
   }

   function check_if_logged_in()
   {
     if( ! $user_is_logged_in)
     {
       redirect('/login_page/');
     }
   }

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

Конечно, если вам нужно защитить все методы, вы можете сделать это в конструкторе.

Class Blah extends CI_Controller
{

  function __construct()
  {
    check_if_logged_in();
  }

   function check_if_logged_in()
   {
     if( ! $user_is_logged_in)
     {
       redirect('/login_page/');
     }
   }
}
1 голос
/ 15 марта 2011

Не уверен, что это лучший способ или нет, но, похоже, это работает для проекта:

У меня был контроллер, и в конструкторе я проверил вход в систему. Если он будет успешным, то будет разрешено выполнение метода «action», в противном случае - перенаправление.

class Admin extends MY_Controller {

    function Admin()
    {
        $this->__construct();
    }

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

        //perform check 
        //if allowed then automatically continue
        //else do a redirect
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...