2011-05-19 32 views
7

Bir ağaç gibi bir veritabanı şeması olan bir sitede çalışıyorum. Üstten alta doğru ben vardır:Çok düzeyli bir kullanıcı izin sistemi tasarlama

  • Birinci bölük

kullanıcı izni sistemi zorundadır birçok

  • Araçlar olabilir birçok
  • Filolar sahip olabilecek birçok
  • Konumları olabilir Birinin ağacın herhangi bir seviyesinde kısıtlı erişime sahip olabileceği veya erişebileceği şekilde esnek olun. Örneğin, x konumunu yöneten bir kişi varsayılan olarak, x konumunun altındaki tüm filolara ve x konumunun altındaki tüm araçlara tam erişime sahip olacaktır. Ama aynı zamanda kullanıcının x konumunun altındaki herhangi bir düğüme erişimini kısıtlayabilmem gerekir.

    Böyle bir izin sistemi için bir şema geliştirmenin uygun yolu ne olurdu? Bir kullanıcının gereksiz yere olsa bile bir erişimi olduğu her bir düğümü saklamak gerçekçi olur mu? Amaç, örneğin bir kullanıcının erişebileceği tüm konumları almak için sorguları kolayca çalıştırabilmem.

  • +4

    Ben tam cevap yazmak için enerjim yok, bu yüzden sadece yerine yorum ve başkası boşlukları doldurmak izin verir. Az önce tarif ettiğiniz her şey, bir ACL aracılığıyla kalıtım kullanılarak gerçekleştirilebilir. Erişim kontrol Listesi. Konumları ACL'nize Kaynaklar olarak kurabilir ve Filolarınız Kaynak olabilir, bu şekilde kullanıcılara erişime izin verebilirsiniz. Alternatif olarak, bir Yuvalanmış Set Modeli hiyerarşisini kullanabilir ve ACL'yi tamamen yok sayabilir ve kullanıcılara ağaçtaki lFT ve RGT değerleri arasında kalan düğümlere erişebilirsiniz. Yani, SELECT * 4 ve 54 ARASINDAKİ YERLER. – Layke

    cevap

    İlgili konular