2008-12-09 20 views
9

Web uygulamamı katmanları arasında iyi bir ayırma ile tasarlamak için elimden geleni yapıyorum. Ben depo desen kullanıyorum ve böyle bir Web ön uç tarafından çağrılan benim ObjectService tarafından çağrılan bir SQLObjectRepository var.Havuz Kalıbı ve katmanlama. Güvenliği nerede uygularım?

Nesne modelimde, kullanıcı, erişmesi gereken nesneleri filtrelemesi gereken bir veya daha fazla bölge ile ilişkilendirilir. Sorum şu, nesneler için sorgulama yaparken, kodun nesnelerdeki izinleri ayarlamak için hizmetin kodunu koymalı mıyım, yoksa bu kod depoda mı olmalıdır? Kullanıcı 2 bölge üyesiyse, kullanıcıyı hizmete bir parametre olarak iletmeliyim veya kullanıcının bölgelerini servise iletmeliyim? I would

cevap

3

:

  • gibi istediğiniz her yerde uygulanabilir şekilde güvenlik çek yaz. Bu şekilde gereksinimler değiştikçe refactor yapabilirsiniz.

  • (dil destekliyorsa, yönüyle ya da daha iyi,) güvenlik kontrolü gerçekten hep uygulamak, depo katmanında yerleştirecektir ise çok hizmetin aynı depoyu tüm pay ortak güvenlik kullanacaksanız, böylece . Aksi halde servisi (ya da hizmette hareket eden bir yönü) yerleştirin.

  • güvenlik kontrol mekanizmasına tüm kullanıcı nesne pass:

    • güvenlik kontrol daha sonra daha da karmaşık hale gelir API değişmez (kullanıcı diğer özelliklerine bağlıdır) ise;
    • daha anlam ifade eder - kullanıcının bir şey yapma iznine sahip olduğunu kontrol edersiniz, ülkelerin listesi değil.