Nasıl bir ACL kaynakların benim ağaç yapısı gerekir?

2 Cevap php

PHP ve Zend_ACL kullanarak, son derece esnek izin sistemi oluşturmak istiyorum. Ben de bu nesnelerin örneklerini, belli bir türdeki tüm nesneleri için izinleri atamak mümkün olmak istiyorum. Bir nesnenin belirli bir örneği sorgulanan ve kaynak ağacında yoksa o zaman 'genel' nesnesi için ayarlanır izin kullanılabilir. Benim sorunum bu yuva gerekiyor ve ben Zend_ACL desteklemeyen, çoklu miras olmadan bunu yapmak için bir yol bilemiyorum olabilir.

Bir örnek bu olurdu. Fakülte, kurslar ve etkinlikler ile bir online öğrenme sitesi. Her olay bir fakülte için bir ders ve her ders aittir. Ben (miras yoluyla ve olayları) tüm dersleri erişmek için her fakülte rol izin edebilmek için istiyorum, ancak belirli bir fakülte kendi malzeme özel istiyor. Yani benim kaynak ağacının yapısı, her fakülte için bir kaynak düğüm var ve her ders fakülte düğümden o fakülte şubesine ait yerine bu varsayılan izinleri var her ders veren genel kurs düğümden dallanma var olun. Yeni yapısı ile nasıl benim genel ders izinler uygulayabilirsiniz? Ben üst ders okunabilir ise her olay, sadece okunabilir olmak istiyorum ama ben de her olay için izinleri varsayılan kümesi uygulamak istiyorsanız aynı derslerden aşağıdaki olaylar için de geçerli, nasıl her olay devralan ağaç gibi organize edebilirsiniz Onun ebeveynden ve çoklu miras olmadan jenerik düğüm var?

Farklı bir sistem için herhangi bir soru ya da yorum veya öneri çok açığız.

2 Cevap

Sizin çoklu kalıtım sorun kafanızın içinde - baz "ders" den ACL değiştirmek ek bir "ebeveyn Kaynak" kurmak vb - Elbette sürece birden fakültelerinde olabilir.

Sen ders doğrudan fakülte devralmak istemiyoruz; sağ fakülte kendisi değil - muhtemelen birisi bu fakülte (TA ya da bir şey) için kurslar düzenlemek mümkün isteyeceksiniz?

faculties, courses, and events. Each event belongs to a course, and each course to a faculty

Parent -> middleman -> child
Courses -> Courses:Faculty2 -> Courses:Faculty2:Course1 
Events -> Events:Course1 -> Events:Course1:Event3

vb

Bu fakülte tarafından size Dersler gruplarını verir, ama yine varsayılan ders izinleri devralır. Her kaynak eklemek gibi - kendi grubu kaynağı, sadece bunu yapmak ebeveyn genel kaynağın hangi anne.

Eğer gizli olması için belli bir ders için tüm olayları - isterseniz sadece Olay bir izni ayarlayın: Ders #

Course1 bu kadar iyi Fakültesi tarafından gruplar Olaylar: Events:Faculty2:Course1:Event3 Bir fakültenin tüm olayları bir izni ayarlamak mümkün olmak istiyorsanız, sadece Olay yukarıda başka bir "aracı" ebeveyn ekleyebilirsiniz

Ben 9 kez çoklu miras ihtiyacınız (veya karışıklık istiyorum) yok 10 üzerinden bir izin sistemi için buldum. Erişim kontrolü basit bir ağacın daha karmaşık ise, erişim kontrolü yeniden değerlendirmek gerekir.

Zend ACL son derece esnektir. Çocuktan İzinler ana kaynaklarından devralınan izinleri üzerine. Ben tamamen örnek alamadım bile, Zend ACL modeli tasarımı desteklemek düşünüyorum. Herhangi bir sorun olmadan, belirli roller için belirli kaynaklara erişebilir.

Yine de, belki size özgürlük fazladan bir derece vermek, hangi assertions hakkında da okuyabilirsiniz.