* Turkish language created for Docs. Belgeler için türkçe dil desteği oluşturuldu. * Turkish docs fix
6.1 KiB
Erişim Kontrol Listesi
Erişim Kontrol Listesi, Nocobase'deki izin kontrol modülüdür. Erişim Kontrol Listesinde rolleri, kaynakları kaydettikten ve karşılık gelen izinleri yapılandırdıktan sonra, rollerin izinlerini değerlendirebilirsiniz.
Kavram Açıklaması
- rol (
ACLRole): izin kararının nesnesi - Kaynak (
ACLResource): Nocobase Erişim Kontrol Listesinde, kaynak genellikle Restful API'deki Resource'a kavramsal olarak benzer olabilen bir veritabanı tablosuna karşılık gelir. - İşlem: "Oluştur", "oku", "güncelle", "sil" vb. gibi kaynaklar üzerindeki işlemler.
- Strateji (
ACLAvailableStrategy): Genellikle her rolün varsayılan kullanıcı izinlerini tanımlayan kendi izin stratejisi vardır. - Grant:
Actiona rol erişimi vermek içinACLRoleörneğindegrantActionişlevini çağırın. - Kimlik Doğrulama:
ACLörneğindecanişlevi çağrılır ve işlev tarafından döndürülen sonuç, kullanıcının kimlik doğrulama sonucudur.
sınıf yöntemi
constructor()
Bir ACL örneği oluşturan oluşturucu.
import { ACL } from '@nocobase/database';
const acl = new ACL();
define()
Bir ACL rolü tanımlayın
Kullanım
define(options: DefineOptions): ACLRole
Tip
interface DefineOptions {
role: string;
allowConfigure?: boolean;
strategy?: string | AvailableStrategyOptions;
actions?: ResourceActionsOptions;
routes?: any;
}
Detaylar
role- 角色名称
// Yönetici adında bir rol tanımlayın
acl.define({
role: 'admin',
});
allowConfigure- Yapılandırma izinlerine izin verilip verilmeyeceğistrategy- Rol İzin Politikası- Tanımlanan stratejinin kullanılacağını belirten, kullanılacak stratejinin adı olan bir
stringolabilir. AvailableStrategyOptionsiçin bu rol için yeni bir strateji tanımlanabilir, bkz.setAvailableActions().
- Tanımlanan stratejinin kullanılacağını belirten, kullanılacak stratejinin adı olan bir
işlemler- Bir rol tanımlarken, rol için erişilebilir birişlemlernesnesi iletebilirsiniz. Bundan sonra, kaynak izinlerini vermek için sıraylaaclRole.grantActionçağrılır. Bkz.aclRole.grantAction
acl.define({
role: 'admin',
actions: {
'posts:edit': {}
},
});
// Diğer kullanım şekli
const role = acl.define({
role: 'admin',
});
role.grantAction('posts:edit', {});
getRole()
Rol adına göre kayıtlı rol nesnesini döndürür
Kullanım
getRole(name: string): ACLRole
removeRole()
Rol adına göre rolleri kaldırın
Kullanım
removeRole(name: string)
can()
Kimlik doğrulama işlevi
Kullanım
can(options: CanArgs): CanResult | null
Tip
interface CanArgs {
role: string; // Rol ismi
resource: string; // Kaynak Adı
action: string; // İşlem adı
}
interface CanResult {
role: string; // Rol ismi
resource: string; // Kaynak Adı
action: string; // İşlem adı
params?: any; // İzinler kaydedilirken gönderilen parametreler
}
Detaylar
can yöntemi öncelikle rolün kayıt için ilgili Action iznine sahip olup olmadığını belirleyecek ve değilse, rolün strategy eşleşip eşleşmediğini belirleyecektir.
Çağrı null döndürdüğünde, rolün izni olmadığını belirtir, aksi takdirde, rolün izne sahip olduğunu belirten bir CanResult nesnesi döndürür.
Örnek
// Rolleri tanımlayın, izinleri kaydedin
acl.define({
role: 'admin',
actions: {
'posts:edit': {
fields: ['title', 'content'],
},
},
});
const canResult = acl.can({
role: 'admin',
resource: 'posts',
action: 'edit',
});
/**
* canResult = {
* role: 'admin',
* resource: 'posts',
* action: 'edit',
* params: {
* fields: ['title', 'content'],
* }
* }
*/
acl.can({
role: 'admin',
resource: 'posts',
action: 'destroy',
}); // null
use()
Kullanım
use(fn: any)Ara katman yazılımlarına ara katman işlevleri ekleyin.
middleware()
@nocobase/server içinde kullanım için bir ara katman işlevi döndürür. Bu ara yazılımı kullandıktan sonra, @nocobase/server, her istek işlenmeden önce izin kararı verecektir.
allow()
Kaynağı herkese açık hale getirin
Kullanım
allow(resourceName: string, actionNames: string[] | string, condition?: string | ConditionFunc)
Tip
type ConditionFunc = (ctx: any) => Promise<boolean> | boolean;
Detaylar
- resourceName - Kaynak Adı
- actionNames - kaynak işlem adı
- condition? - Konfigürasyon Etkili Koşullar
stringiletmek, tanımlanan koşulun kullanıldığını ve kayıt koşulununacl.allowManager.registerConditionyöntemini kullandığını gösterir.acl.allowManager.registerAllowCondition('superUser', async () => { return ctx.state.user?.id === 1; }); // superUser durumu için users:list yetkilerini açar acl.allow('users', 'list', 'superUser');- ConditionFunc'u ctx parametresiyle iletir ve sonucunu
booleanolarak döndürür.// Kullanıcı kimliği 1 olduğunda, user:list'e erişebilirsiniz. acl.allow('users', 'list', (ctx) => { return ctx.state.user?.id === 1; });
Örnek
// users:login erişim yetkisi olanlar erişebilir.
acl.allow('users', 'login');
setAvailableActions()
Kullanım
setAvailableStrategy(name: string, options: AvailableStrategyOptions)
Kullanılabilir bir izin politikası kaydedin
Tip
interface AvailableStrategyOptions {
displayName?: string;
actions?: false | string | string[];
allowConfigure?: boolean;
resource?: '*';
}
Detaylar
- displayName - Politika Adı
- allowConfigure - Bu politikanın config source izni olup olmadığına bakılmaksızın, bunu
trueolarak ayarladıktan sonra,ACLde birconfigResourceskaynağı olarak kaydolma iznini belirleme isteği bir geçiş döndürür. - actions - Politika içindeki işlemler listesi joker karakteri
*destekler - resource - Politika içindeki kaynak tanımı joker karakteri
*destekler