Bu belge AI tarafından çevrilmiştir. Herhangi bir yanlışlık için lütfen İngilizce sürümüne bakın
ACL (Erişim Kontrol Listesi), kaynak işlemlerine yönelik izinleri kontrol etmek için kullanılır. İzinleri rollere atayabilir veya rol kısıtlamalarını atlayarak doğrudan izinleri belirleyebilirsiniz. ACL sistemi, izin parçacıkları (snippet), ara yazılımlar (middleware), koşullu değerlendirme gibi çeşitli yöntemleri destekleyen esnek bir izin yönetimi mekanizması sunar.
ACL nesneleri veri kaynaklarına (dataSource.acl) aittir. Ana veri kaynağının ACL'sine app.acl üzerinden hızlıca erişebilirsiniz. Diğer veri kaynaklarının ACL kullanım detayları için Veri Kaynağı Yönetimi bölümüne bakınız.
İzin parçacıkları (Snippet), sık kullanılan izin kombinasyonlarını yeniden kullanılabilir izin birimleri olarak kaydetmenizi sağlar. Bir rol bir parçacığa bağlandığında, ilgili izin setini elde eder. Bu sayede tekrarlayan yapılandırmalar azalır ve izin yönetimi verimliliği artar.
acl.allow(), belirli işlemlerin rol kısıtlamalarını atlamasına izin vermek için kullanılır. Bu, herkese açık API'ler, dinamik izin değerlendirmesi gerektiren senaryolar veya izin değerlendirmesinin istek bağlamına göre yapılması gereken durumlar için uygundur.
condition parametresi açıklaması:
'public': Herhangi bir kullanıcı (giriş yapmamış kullanıcılar dahil) erişebilir, herhangi bir kimlik doğrulaması gerekmez.'loggedIn': Yalnızca giriş yapmış kullanıcılar erişebilir, geçerli bir kullanıcı kimliği gereklidir.(ctx) => Promise<boolean> veya (ctx) => boolean: İstek bağlamına göre erişime izin verilip verilmediğini dinamik olarak belirleyen özel bir fonksiyon; karmaşık izin mantıkları uygulayabilir.acl.use(), özel izin ara yazılımlarını kaydetmek için kullanılır ve izin kontrol sürecine özel mantık eklemenizi sağlar. Genellikle ctx.permission ile birlikte, özel izin kuralları tanımlamak için kullanılır. Herkese açık formların özel parola doğrulaması gerektirmesi, istek parametrelerine dayalı dinamik izin değerlendirmesi gibi alışılmadık izin kontrolü gerektiren senaryolar için uygundur.
Tipik Uygulama Senaryoları:
ctx.permission aracılığıyla izinleri kontrol etme:
ctx.permission özellik açıklaması:
skip: true: Sonraki ACL izin kontrollerini atlayarak doğrudan erişime izin verir.addFixedParams, belirli kaynak işlemlerine sabit veri kapsamı (filtre) kısıtlamaları ekleyebilir. Bu kısıtlamalar rol sınırlamalarını atlayarak doğrudan uygulanır ve genellikle sistemin kritik verilerini korumak için kullanılır.
İpucu:
addFixedParams, sistemde yerleşik roller, yönetici hesapları gibi hassas verilerin yanlışlıkla silinmesini veya değiştirilmesini önlemek için kullanılabilir. Bu kısıtlamalar, rol izinleriyle birlikte geçerli olur ve izinlere sahip olsanız bile korunan verilerin manipüle edilememesini sağlar.
acl.can(), belirli bir rolün belirtilen işlemi gerçekleştirme iznine sahip olup olmadığını kontrol etmek için kullanılır ve bir izin sonuç nesnesi veya null döndürür. İş mantığında izinleri dinamik olarak değerlendirmek için sıkça kullanılır; örneğin, bir ara yazılımda veya işlem işleyicisinde (handler) rol bazında belirli işlemlerin yapılmasına izin verilip verilmeyeceğine karar vermek gibi.
İpucu: Birden fazla rol geçirilirse, her rol sırayla kontrol edilir ve izinli olan ilk rolün sonucu döndürülür.
Tip Tanımları:
Özel işlemlerinizin arayüzde (örneğin rol yönetimi sayfasında) izinlerinin yapılandırılabilir olmasını istiyorsanız, bunları setAvailableAction kullanarak kaydetmeniz gerekir. Kaydedilen işlemler izin yapılandırma arayüzünde görünür ve yöneticiler arayüz üzerinden farklı roller için işlem izinlerini yapılandırabilir.
Parametre Açıklamaları:
{{t("key")}} formatını kullanır).'new-data': Yeni veri oluşturan işlemler (örneğin içe aktarma, ekleme vb.).'existing-data': Mevcut verileri değiştiren işlemler (örneğin güncelleme, silme vb.).'new-data' türü için geçerlidir.Kayıt yapıldıktan sonra, bu işlem izin yapılandırma arayüzünde görünür ve yöneticiler rol yönetimi sayfasında bu işlemin izinlerini yapılandırabilir.