Bạn đã đụng phải cái đinh trên đầu, nhưng có một cách hiệu quả hơn một chút để làm điều đó.
Mở rộng bộ điều khiển cơ sở, theo một cách (tôi tin rằng ban đầu được phác thảo bởi Phil Sturgeon) nhưng tôi sẽ tóm tắt ở đây:
Xem bài viết này cho một bài viết rất sâu sắc.
nhưng về bản chất:
<?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!
}
}
}
vì vậy bây giờ nếu bạn muốn hạn chế quyền truy cập, chỉ cần:
class Secret_page extends MY_Controller {
// your logged in specific controller code
}
và bộ điều khiển mở rộng sẽ tự động kiểm tra xem người dùng đã đăng nhập vào hàm tạo chưa.
về cách thực hiện, tôi có thể sẽ đặt user_id làm giá trị để kiểm tra xem tập hợp của nó, hoặc có thể là "nhóm" người dùng - sau đó bạn có thể nhận quyền của người dùng và các cấp độ truy cập khác nhau trong hệ thống của mình.
hy vọng điều này sẽ giúp một chút.
chỉnh sửa
Thêm cái này vào 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 );
}
}
Khi bạn đang sử dụng CI 2.0, bạn sẽ cần đặt MY_Controllers bên trong Ứng dụng / CORE thay vì Thư viện.
Ứng dụng / Lõi của tôi trông giống như sau:
Admin_Controller.php
MY_Controller.php
Public_Controller.php