Serene, kullanıcı ve rol izin iletişim kutularında izinlerin bir listesini gösterir. Burada kendi izinlerinizi göstermek için bu izinleri aşağıdaki özelliklerden biriyle kullanmanız gerekir:
PermissionAttributeBase'den türetilen nitelikler:
- İzin Okuma
- İzin Değiştirme
- İzin Ekle
- Güncelleme İzni
- İzni Sil
Sayfa ve Uç Nokta Erişim Kontrolü Nitelikleri:
- Sayfa Yetkilendir
- Hizmet Yetkilendirmesi
Bu nitelikler aşağıdaki türlerden biriyle birlikte kullanılabilir ve bunlardan birinde bulunabilir:
- XYZRow'un üstünde (Okuma, Yazma, Ekleme, Güncelleme, Silme izinleri)
- XYZPage'in üstünde ve eylem yöntemlerinde (PageAuthorize)
- XYZEndpoint'in yanı sıra hizmet içi eylemler (ServiceAuthorize)
Bu özelliklerden birine sahip bir izin anahtarı kullandığınızda Serene, uygulama başlangıcında yansımayı kullanarak bunları otomatik olarak keşfeder.
Bunlardan herhangi birinde bir izin anahtarı kullanmıyorsanız ancak yine de bunu izin iletişim kutularında göstermek istiyorsanız, Assembly'de RegisterPermission niteliğini kullanabilirsiniz (bunu YourProject.Web'in herhangi bir yerine yazın):
[assembly: Serenity.ComponentModel.RegisterPermissionKey("MySpecialPermissionKey")]
PermissionKeys Sınıfı
Serene'deki her modül için AdminPermissionKeys.cs, NorthwindPermissionKeys.cs vb. dosyalarda PermissionKeys sınıfları vardır:
[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";
}
[NestedPermissionKeys] özelliği, burada tanımlanan izin anahtarlarının da kaydedilmesini ve izin iletişim kutusunda gösterilmesini sağlar.
Bu örnekteki [ImplicitPermission] şu anda yalnızca Start#'ta çalışıyor ve bu izne sahip bir kullanıcının otomatik olarak hangi izinlere sahip olacağını kontrol ediyor.
Örneğin, bir kullanıcının "Northwind:Customer:Delete" izni işaretliyse, bu izinler kendisine açıkça verilmemiş olsa bile, "Northwind:Customer:View" ve "Northwind:General" izinlerine de sahip olduğu kabul edilir.
İzin Ağacını Düzenleme
Ağaç hiyerarşisinde izinler oluşturmak için izin anahtarlarınızda ayırıcı olarak iki nokta üst üste (:) kullanın:
- MyModule:SubModule:Genel
- MyModule:SubModule:İzin1
- MyModule:SubModule:İzin2
Bu tuşlar MyModule / SubModule kategorisi altında gösterilecektir. Böylece kategori anahtarları şöyle olacaktır:
- MyModule:AltModule:
Kategori anahtarları iki nokta üst üste ile biter. İki nokta üst üste ile biten izin anahtarlarını kullanmayın.
Lütfen kategori anahtarlarıyla eşleşen izin anahtarlarını kullanmayın. Bu tür tuşları kullanırsanız, örneğin MyModule:SubModule, MyModule / SubModule kategorisi altında değil, aynı seviyede onun yanında gösterilecektir .
Böyle bir kategori için genel izne ihtiyacınız varsa MyModule:SubModule:General gibi bir şey kullanın .
Genel'in özel bir anlamı yoktur, Ortak, Modül, Görünüm vb. dilediğinizi kullanabilirsiniz.
Kategori Görüntüleme Metinlerini Kullanma
Kategoriler izin anahtarlarından otomatik olarak belirlendiğinden kullanıcı dostu bir ekran metni yoktur.
Yerelleştirme sistemini kullanarak bunlar için ekran metinleri eklemeniz gerekir.
Yerelleştirmeye ihtiyacınız yoksa site.texts.invariant.json'a metin eklemeniz yeterli
Örneğin site.texts.invariant.json dosyasında şu anahtarlar vardır:
"Permission.Administration:": "Administration",
"Permission.Administration:Security": "User, Role Management and Permissions",
"Permission.Administration:Translation": "Languages and Translations",
"Permission.Northwind:Customer:": "Customers",
"Permission.Northwind:Customer:View": "View",
"Permission.Northwind:Customer:Delete": "Delete",
"Permission.Northwind:Customer:Modify": "Create/Update",
"Permission.Northwind:General": "[General]"
Yönetim: ve Müşteri: gibi iki nokta üst üste (:) ile biten tuşlar kategorilere karşılık gelir ve bunlar onların ekran metinleridir.
En azından değişmez dile kategoriler için metinler eklemeniz gerekir. Yerelleştirme istiyorsanız başka dillere de ekleyebilirsiniz.