2015-01-15 13 views
7

Tôi có một trang web được xây dựng trong trình mã hóa mà tôi đã thiết kế danh sách kiểm soát truy cập để quản lý quyền của các loại người dùng khác nhau. người dùng khác nhau đăng nhập vào trang web là:Danh sách điều khiển truy cập để quản lý cột cơ sở dữ liệu được tìm nạp

  1. Super Admin
  2. quản
  3. SEO tài
  4. Developer

Bây giờ tôi đã hoàn thành việc kiểm soát truy cập cho điều này và cho phép cho tiện ích, cập nhật , danh sách và xóa có thể được gán cho mọi người dùng thông qua một mô-đun có thể truy cập Super Admin.

Bây giờ (điều này là một phần của yêu cầu mới của khách hàng) Tôi muốn làm cho các cột tiếp cận với người dùng nhất định, Ví dụ:

Nếu một bảng Sản phẩm có 4 Cột

Products : 
id | Products | Price | Status 
-----+-----------+-------+---------- 
1 | prod1 | 20.0 | 1 
2 | prod2 | 35.6 | 0 

Bây giờ tôi muốn điều đó cho Người dùng SEO Giá cột không hiển thị trong Danh sách.

LƯU Ý: đây chỉ là một ví dụ, tôi cần phải thực hiện điều này để quản trị viên kiểm soát những người có quyền cho cột nào. Tôi không thể viết đơn giản nếu logic khác trong Tệp Chế độ xem của tôi để loại trừ các cột không mong muốn.

Hãy cho tôi biết cách tôi có thể thực hiện việc này mà không cần thiết kế lại toàn bộ hệ thống hoặc thực hiện các thay đổi rất lớn.

Trả lời

0

Đó là lý do bạn sử dụng ACL. ACLS là một cách năng động để lưu trữ các đặc quyền. Tôi hy vọng bạn có một mô hình người dùng. Trong mô hình này, bạn cần đọc ACL cho người dùng hiện tại. bạn đặt một số hằng số cho cấp độ truy cập, tương tự như unix chmod. sau đó bạn xây dựng một mảng có chứa tất cả các cột và giá trị acl cho cột này.

Xây dựng truy vấn của bạn, bạn có thể sử dụng các phương pháp như

isSeo(); 

hoặc

hasAccess($tableName); 

Tất nhiên đây là một sự thay đổi lớn nhưng tôi không biết làm thế nào bạn muốn thực hiện ACL whichout thay đổi mã của bạn.

+0

Tôi đã có các chức năng này để kiểm tra đặc quyền loại người dùng cho bất kỳ bảng cụ thể nào.Tuy nhiên, những gì tôi đang cố gắng hiện tại là tôi muốn đặt đặc quyền người dùng trên các cột cụ thể của bảng đó. – Mohan

+0

Sau đó, tôi đề nghị thêm một tham số cho cột: hasAccess ($ tableName, $ column); – Corni

0

Có thể thử thủ tục lưu trữ/chức năng hoặc thử sử dụng SQL liệu như thế này

GRANT SELECT(id,Products,Status) ON Products TO 'SEO User'@'somehost'; 
1

Bạn có thể sử dụng thư viện ion_auth .. rất đơn giản để tích hợp và quản lý người dùng và cấp độ truy cập ...

Các vấn đề liên quan