Nasıl bir web uygulamasında benim ACL uygulamak gerekir?

5 Cevap php

Ben gelişmekte olan ve benim her zamanki yaklaşım geliştirilebilir olup olmadığını merak başlamak üzereyim web uygulaması düşünüyordum.

Benim son birkaç apps ben her onlara uygulanan saklayıcısında yüzden ben sadece can var (örneğin CREATE POST, EDIT POST, vb gibi) rolleri (aşağıya bakınız) bir tablo oluşturduk tescil bir kullanıcıyı belli hakları atamak ve daha sonra bunları kontrol edin (örneğin, $user->hasRight(CREATE_POST)).

Bu daha iyi bir yaklaşım olup olmadığını merak ediyorum. Kesinlikle hakları özellikle kullanıcıya bağlı olmayan kafa karıştırıcı (Ben her doğru bir boolean sütun bir tablo olabilir ama bu sadece küçük bir iyileşme gibi geliyor) - ve çevresinde bazı değiştirirsem ne olur?

Ben standart kitaplıkları (app kendisi benim için bir öğrenme deneyimi: PostgreSQL kullanarak, git vs) kullanmak için aramıyorum ben kendi inşa etmek, onlardan ilham almak için gayet mutluyum rağmen - bu yüzden düşünüyorum özel bir şey varsa Ben de bir göz atmalısınız söyleyin lütfen :)

5 Cevap

Bu temelde kendi web uygulamaları almam aynı yaklaşım (ve deneme yanılma biraz benim için o gitti). Tek fark, daha sonra daha fazla izinleri eklemek istiyorsanız, yapabilirsiniz, böylece muhtemelen, sütunlar gibi farklı izinlere sahip bir tablo kullanmak istiyorum, bir. Bir tamsayı bit kullanarak izinleri sabit bir sayı, tamsayı olduğu gibi yani birçok bit sınırlar. Genellikle ben muhtemelen yeterli olduğunu varsayalım 32 olurdu, ama ben kendimi bu şekilde sınırlamak için değil tercih.

Bu değer ne için, bu da phpBB (tablo sütunları izinleri) kullandığı model, ve tartışmasız en popüler PHP web uygulaması için yeterince iyi olmadığını, bu sizin için büyük olasılıkla yeterince iyi ;-)

Sen yaygın olarak kullanılan Java ACL çerçeve Bahar güvenlik (eski Acegi), belgelerine bakmak olabilir.

Dokümantasyon kapsamlı ve aynı zamanda bot kimlik doğrulama ve yetkilendirme tasarımında yapılan çeşitli konuları açıklar. Hatta Java kullanmadan layık okuyor.

Sen bir bakış ve Acegi ne bir izlenim elde etmek için (ve değil) yapmak index page görebilirsiniz. Ayrıca authorization concepts ya da database schema için doğru atlayabilirsiniz.

Ben zaten phpGACL buldum eminim, ama burada değil olması durumunda bir link bulunuyor. İlk başta başınızın etrafında sarmak için biraz kaba olabilir ve kesinlikle kütüphane bir projeye uygulamak için (zaman alıcı) zor, ama dokümantasyon ve demo mükemmel referans noktalarıdır.

PHP Generic Access Control Lists

Zend Framework yapmak için çalışıyoruz ne benzer bir ACL hangi vardır.

ACL genel olarak, örneğin, here, tartışılmıştır, web uygulamaları yaklaşımlar.