Ben bazı PHP mantığı ile benim statik web kaynakları bazı erişimi kontrol etmek. Web sunucusu aracılığıyla dizin tabanlı yetkilendirme uygun ya da kolayca mümkün değildir çünkü.
Şeylerin bir arada erişim verilen veya reddedilen olup olmadığını belirler. Ve bu kurallar zaman zaman değiştirin.
Başlangıçta basit bir regex yol maçı ve bir oturum değişkeni bir kontrol oldu. Ilgili birkaç değişken var gibi şimdi daha karmaşık.
Ben bu kadar hızlı ve kuralları değiştirmek kolaydır bu üstlenmeden hakkında gitmek nasıl merak ediyorum. "Bu ve bu, daha sonra başka bir 403, teslim eğer." Basit bir iken düz PHP bunu yapmak için iyiydi. Şimdi şartlar daha karmaşık ve içinde yaygın ama biraz farklı koşullar her yuvalama bir çift seviyeleri var. Bu refactor tüm yeterince kolaydır, ama en sezgisel ve güncellemek için kolay değil.
Ben iki şeyden birini düşünüyorum.
Koşulların en üst düzeyinde her biri için sınıfları oluşturulması ve doğru bir Yetkilendir'i almak için bir Strateji Fabrika kullanın. Ortak bit ve ne gerekirse aşırı içeren bir taban sınıftan hepsini türetmek. Bazı koşullar değiştiğinde bu hala çevresinde bazı üreticimizin eğilimli olabileceğini düşünüyorum.
Tür güvenlik duvarı kuralları gibi sipariş kurallar 2d dizi dolaşır basit bir motoru yapmak. Gibi bir şey:
<allow|deny>, <auth_group>, <path_regex>, <other vars>
Ben tam aracılığıyla bu bir düşünce değil ama güncellemek için ve aynı zamanda bir insan olarak okumak daha kolay olacak gibi görünüyor.
Sen ne yapardın? Bunun için kullanabileceğiniz kurulmuş bir desen veya kütüphane var mı?
Ben bir süre önce başka bir uygulama bu benzer sorunla karşı karşıya. Ben zincirleme kurallar şekilde güncellemek için kolay istedim ve koşulları çeşitli düzeylerde dayalı birlikte çıktıları nerede. Bu, bu uygulama kadar karmaşık değildir, ama insanlar bu tür bir sorunu çözmek için kullanabileceğiniz desenleri duymak ilgi duyarım.