Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách tốt nhất để hạn chế các trang cụ thể chỉ cho người dùng đã đăng nhập trong Codeigniter là gì?

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trợ giúp với:ERROR 1025 (HY000):Lỗi khi đổi tên của .... (errno:150)

  2. Loại dữ liệu nào để sử dụng cho trường mật khẩu băm và độ dài là bao nhiêu?

  3. Không thể khiến truy vấn nguồn MySQL hoạt động bằng cách sử dụng mô-đun mysqldb Python

  4. Cách tự động tải MySQL khi khởi động trên OS X Yosemite / El Capitan

  5. Cách sao lưu cơ sở dữ liệu MySQL Chamilo LMS của bạn