Bazı fikirler ise planlama php sistemi

2 Cevap php

Ben nispeten büyük PHP sistemi yapı taahhüt üzereyim, ben sadece belli bir özelliği uygulamak için bazı fikirler gerekiyor.

Kullanıcıların kayıt sağlayacak. Kayıt yaptırdıktan sonra, kullanıcı kendi hesabına atanacak bir güvenlik seviyesine sahip olacaktır.

Ben güvenlik seviyeleri vardı, yani 1, 2 ve 3, ne belirli güvenlik seviyeleri ile insanlara bazı şeyleri göstermek için en iyi yol olacağını?

Şimdiden teşekkür ederim.

2 Cevap

Zend API yıllara bakarak hakkında Pekka yorumlarının iyi. PHP için Altyapıları çoğu (ne yazık ki) şu anda (altında iğrenç amatör kodu ile) kötü uygulanan önemsiz, ama Zend API neredeyse benzersiz değerlidir.

Eğer (ve kolayca genişletilmiş olamaz) ne istediğinizi uygun bir şey bulamazsa yapıyor yanlış bir şey vardır ki, kendi rulo yaparsanız, o zaman ben bir OO yaklaşım ve üzeri kullanıcı özelliklerini göstermek istiyorum sınıf.

örneğin

$user = new User($session->userId);
if (!$user->isYönetici && !$user->canViewReports)
    someErrorHandler("You do not have permission to access this content.");

Ben sabit seviyelerine sahip önlemek, ancak bunun yerine bir rolleri temelli bir yaklaşım takip ediyorum.

yani ben gibi düzeylerine sahip önlemek istiyorum:

  • Personel
  • Yönetici
  • Yönetici

Ve bunun yerine özellikleri (gibi açıklayıcı örnekler) için gitmek istiyorum:

  • read_access
  • write_access
  • can_view_logs
  • can_view_reports
  • is_administrator

Bu (kaçınılmaz olarak) sizi geri gitmek ve mevcut kodu değiştirmek zorunda istediğiniz bir ek izinler grup istiyorum keşfetmek zaman, daha sonra kolayca daha açık olmasını sağlar.

That doesn't mean putting users in groups is a bad idea (it's not and you could implement this using a groups system, örneğinwhere by a user could be in both "Reporting" and "Logs"), but assumptions about security levels being hierarchical are typically the wrong approach (örneğinLevel 1=Personel, Level 2=Yöneticis, Level 3=Admin) - this is because you almost always end up needing a system that's more flexible than a simple hierarchical system allows.

Bu yaklaşımı alarak son yaparsanız Uygulamada, bir aşırı büyük kullanıcı sınıfı (ki, yeni şifreler ayarı, kullanıcı özelliklerini almak için vb şeylerle dolu sonunda olabilir) önlemek için, bir izinler veya Grup sınıfı isteyebilirsiniz.

örneğin

$group = new Group($session->userId);
if (!$group->Yöneticis && !$group->Reporting)
    someErrorHandler("You do not have permission to access this content.");