Bitsel operatörleri kullanarak farklı modüller için kullanıcı rolü izinleri

1 Cevap php

Yani birçok modülleri (farklı sayfa gibi modüllerin düşünüyorum), her modül izinleri bir dizi var olan bir uygulama var; görünüm eklemek, düzenlemek, silmek

Ben her kullanıcı rolü, örneğin, her modül için ayrıcalıklara sahip istiyorum

Rol A İzinler

Module 1 -> view
Module 2 -> add, edit
Module 3 -> view, add, edit, delete
etc.

Bunu nasıl desteklemek için veritabanı tasarımı ve nasıl bitsel operatörleri kullanarak uygulanması hakkında gitmek istiyorum (ya da bu özel durum için daha verimli bir yol olurdu?)

Zaten kullanıcı, user_role ve rol tablolar var ama ben Modülü tablo tasarımı nasıl emin değilim.

1 Cevap

Eğer bir bit maskesi kullanmaya karar verirseniz, size takip edebilirsiniz izinlerin sayısı (Bir imzalı 4 bayt tamsayı veritabanı sütununda 31 izinleri izleyebilirsiniz) sınırlı olduğunu unutmayın. Her izin sonra iki (1, 2, 4, 8, vb) bir güç, bir değer atanmış olacaktır, ve izin maçı kontrol etmek için bitsel işlemler gerçekleştirebilecek.

Başarmak aradıklarını, ben yerine role_has_module_privs tablo oluşturma öneririm. Bu yaklaşım bir sorgulama açısından çok daha ölçeklenebilir ve daha verimlidir. Eğer kombinasyon sonlu sayıda varsa Ancak, bitmaskları daha verimli olabilir.