Kỹ thuật “bit field” trong phân quyền
Có thể nhiều bạn đã biết về kỹ thuật này, tuy nhiên, mình vẫn viết bài này, hi vọng các bạn chưa biết có thêm lựa chọn khi làm chức năng phân quyền trong các ứng dụng
Giả sử module tin tức trong ứng dụng của mình có 4 chức năng:
- Đọc tin
- Thêm tin
- Xóa tin
- Sửa tin
Mình cần phân quyền cho 2 nhóm: admin và editor
Áp dụng kỹ thuật bit field, mình sẽ cho mỗi chức năng của module tin tức 1 con số đại diện, và lưu thành mảng
$bitfields_news = array( 'canview' => 1, 'canadd' => 2, 'canedit' => 4, 'candelete' => 8 ); |
Các bạn để ý các con số đại diện, tăng theo qui luật, số sau = số trước x 2 (bắt đầu từ 1)
Trong table groups, mình có cột news_permission, cột này sẽ cho biết admin hay editor có những quyền gì.
Giả sử admin có full quyền thì cột news_permission sẽ có giá trị:
1 + 2 + 4 + 8 = 15
Giả sử editor chỉ có quyền xem và sửa thì cột news_permission sẽ có giá trị:
1 + 4 = 5
Bảng groups sẽ như sau:
id_____name______news_permission
1_____admin______15
2_____editor______5
Bây giờ, ta sẽ xét quyền. Khi user nhấn delete một mẩu tin nào đó, ta sẽ check như sau:
if ($users['Group']['news_permission'] & 8) { // cho phep xoa } |
Chú ý phép toán &
Các bạn có thể dùng hàm decbin() để đổi sang nhị phân rồi đối chiếu
decbin(15) = 1111
decbin(8) = 1000
Mã nguồn forum VBB sử dụng kỹ thuật này rất hiệu quả
4 Comments to “Kỹ thuật “bit field” trong phân quyền”
Post comment
Bài viết mới
- CakePHP version 1.3.12
- Tạo chuỗi ngẫu nhiên với 1 dòng code
- Kỹ thuật “bit field” trong phân quyền
- Làm việc với File và Folder
- CakePHP 1.3.8
- CakePHP 1.3.7 Released
- Ajax trong CakePHP
- Tạo và load file config trong CakePHP
- Làm site đa ngôn ngữ với CakePHP (Phần 1)
- CakePHP 1.3.6 and 1.2.9 released
- CakePHP 1.3.5 released
- Type hinting trong PHP
- CakePHP ra phiên bản mới 1.3.4
- Tích hợp Zend framework vào CakePHP
- Tạo virtual host trên local
- Sử dụng Acl trong cakephp – Phần 2
- Sử dụng Acl trong cakephp – Phần 1
- Sinh code tự động với cake console
- Tự động xóa record ở bảng con khi reocord ở bảng cha bị xóa
- Xác thực người dùng với component Auth
Thảo luận mới
- admin on Sử dụng session trong CakePHP
- admin on Sử dụng session trong CakePHP
- hanh on Sử dụng session trong CakePHP
- bich yen on Sử dụng session trong CakePHP
- admin on Sử dụng session trong CakePHP
- bich yen on Sử dụng session trong CakePHP
- bich yen on Sử dụng session trong CakePHP
- admin on Sử dụng Acl trong cakephp – Phần 1
- admin on Sử dụng session trong CakePHP
- Bich Yen on Sử dụng session trong CakePHP
TAG
Calendar
Lưu trữ
- September 2011 (3)
- July 2011 (1)
- March 2011 (1)
- February 2011 (1)
- November 2010 (4)
- October 2010 (1)
- September 2010 (2)
- August 2010 (9)
- July 2010 (9)
- June 2010 (22)
Blogroll
- Bakery
- Biển đảo Việt Nam
- CakePHP
- CakePHP Google Group
- CakePHP Manual
- CakePHP Questions
- Diễn đàn CakePHP VN

admin

Cam on admin da share, ki thuat nay minh su dung cach day 5 nam. Giam thieu so dong code di rat nhieu
hi !
Ý tượng hay, vậy bạn có thể share code được không vây?
Cách làm đã rất rõ ràng rồi, giờ chỉ việc áp dụng thôi, code chỉ là hiện thực hóa và tùy thuộc ứng dụng của bạn, mình cũng chẳng biết share code gì!
Mình có file hoadons_controller.php như sau :
[PHP]Hoadon->query($sql);
$this->set(“datas”,$datas);
}
}
?>[/PHP]
mình không biết biểu diễn câu lệnh sql này trong cakephp thế nào lên đành phải làm cách này.câu lệnh sql này mình sử dụng trong phpmyadmin vẫn cho kết quả đúng.Ai viết dc câu lệnh sql này trong cakephp giúp với
và file element/sp_ban_nhieu.ctp như sau:
[PHP]
requestAction(“/hoadons/sp_ban_nhieu”);
echo “”;
print_r($ids);
echo “”;
if($ids!=null){
echo “có mảng ids”;
}else{
echo “không có gì”;
}
?>[/PHP]
Nhưng kết quả trả về là không có gì cả.
Đang cần gấp a em giúp với.Thanks