Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jaka jest najlepsza praktyka ograniczania określonych stron tylko do zalogowanych użytkowników w Codeigniter?

Trafiłeś w gwóźdź w głowę, ale jest na to nieco skuteczniejszy sposób.

Rozszerz podstawowe kontrolery w jedną stronę (chyba, że ​​zostało to pierwotnie nakreślone przez Phila Sturgeona), ale podsumuję tutaj:

Zobacz ten artykuł za bardzo dogłębny opis.

ale w istocie:

<?php
class MY_Controller extends Controller
{
    function __construct()
    {
        parent::Controller();
        if (! $this->session->userdata('first_name'))
        {
            redirect('login'); // the user is not logged in, redirect them!
        }
    }
}

więc teraz, jeśli chcesz ograniczyć dostęp, po prostu:

class Secret_page extends MY_Controller {

 // your logged in specific controller code
}

a rozszerzony kontroler automatycznie sprawdzi, czy użytkownik jest zalogowany w konstruktorze.

jeśli chodzi o sposób, prawdopodobnie ustawiłbym user_id jako wartość, aby sprawdzić, czy jest ustawiony, czy może użytkownik "grupa" - wtedy możesz uzyskać uprawnienia użytkownika i różne poziomy dostępu w swoim systemie.

mam nadzieję, że to trochę pomoże.

edytuj

Dodaj to do application/config.php

/*
| -------------------------------------------------------------------
|  Native Auto-load
| -------------------------------------------------------------------
| 
| Nothing to do with cnfig/autoload.php, this allows PHP autoload to work
| for base controllers and some third-party libraries.
|
*/
function __autoload($class)
{
    if(strpos($class, 'CI_') !== 0)
    {
        @include_once( APPPATH . 'core/'. $class . EXT );
    }
}

Ponieważ używasz CI 2.0, będziesz musiał umieścić MY_Controllers wewnątrz Application/CORE, a nie w bibliotekach.

Moja aplikacja/rdzeń wygląda trochę tak:

Admin_Controller.php
MY_Controller.php
Public_Controller.php


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać odpowiednik ResultSetMetaData bez ResultSet?

  2. java.net.SocketException:Uszkodzony potok

  3. MySQL — Base64 kontra BLOB

  4. Laravel:Jak korzystać z wielu relacji tabeli przestawnej

  5. Wstawianie obiektu Python datetime.datetime do MySQL