Bir kullanıcının/rolün bir varlığa yazma izni varsa, okuma izninin de otomatik olarak verilmesi gerektiğini düşünmek doğaldır.
Aksi takdirde, bir kullanıcı ilk etapta kaydın kendisini göremezse bir varlığı nasıl değiştirebilir?
StartSharp, kullanıcının başka bir izne sahip olması durumunda, bir kullanıcıya/role otomatik olarak izin atama yeteneği sağlar.
Nitelikleri kullanarak izinler arasındaki bu tür ilişkileri tanımlamak oldukça basittir:
[NestedPermissionKeys]
[DisplayName("Northwind")]
public class PermissionKeys
{
[DisplayName("Customers")]
public class Customer
{
[ImplicitPermission(General), ImplicitPermission(View)]
public const string Delete = "Northwind:Customer:Delete";
[Description("Create/Update"), ImplicitPermission(General), ImplicitPermission(View)]
public const string Modify = "Northwind:Customer:Modify";
public const string View = "Northwind:Customer:View";
}
[Description("[General]")]
public const string General = "Northwind:General";
}
Burada şunu tanımlıyoruz, eğer bir kullanıcı/rol "Northwind:Customer:Delete" veya "Northwind:Customer:Modify" iznine sahipse, otomatik olarak "Northwind:General" ve "Northwind:Customer:View" izinlerine de sahip olması gerektiğini tanımlıyoruz.
Bu ilişkiler, izinler iletişim kutusunda belirli bir kaynağa erişim vermek için gerekli tüm izinleri manuel olarak ezberlemeniz ve kontrol etmeniz zorunluluğundan sizi kurtarır.
Ayrıca, paylaşılan izin anahtarlarını kullanmanıza izin vererek erişim kontrolünü büyük ölçüde basitleştirir.