Tento dokument byl přeložen umělou inteligencí. V případě nepřesností se prosím obraťte na anglickou verzi
ACL (Access Control List) slouží k řízení oprávnění pro operace s prostředky. Oprávnění můžete přidělit rolím, nebo je přímo omezit bez ohledu na role. Systém ACL nabízí flexibilní mechanismus správy oprávnění, který podporuje fragmenty oprávnění (snippets), middleware, podmíněné posuzování a další metody.
Objekty ACL náleží ke zdrojům dat (dataSource.acl). K ACL hlavního zdroje dat se dostanete rychle přes app.acl. Podrobnosti o používání ACL pro jiné zdroje dat naleznete v kapitole Správa zdrojů dat.
Fragmenty oprávnění (Snippets) umožňují registrovat často používané kombinace oprávnění jako znovupoužitelné jednotky. Jakmile je role svázána se snippetem, získá odpovídající sadu oprávnění, což snižuje duplicitní konfiguraci a zvyšuje efektivitu správy oprávnění.
acl.allow() slouží k povolení určitých operací obejít omezení rolí. Hodí se pro veřejná API, scénáře vyžadující dynamické posuzování oprávnění nebo případy, kdy je potřeba posoudit oprávnění na základě kontextu požadavku.
Popis parametru condition:
'public':: Jakýkoli uživatel (včetně nepřihlášených) má přístup bez jakékoli autentizace.'loggedIn':: Přístup mají pouze přihlášení uživatelé, vyžaduje platnou uživatelskou identitu.(ctx) => Promise<boolean> nebo (ctx) => boolean:: Vlastní funkce, která dynamicky určuje, zda je přístup povolen na základě kontextu požadavku. Může implementovat složitou logiku oprávnění.acl.use() slouží k registraci vlastního middleware pro oprávnění, což umožňuje vložit vlastní logiku do procesu kontroly oprávnění. Obvykle se používá společně s ctx.permission pro definování vlastních pravidel oprávnění. Je vhodný pro scénáře vyžadující nekonvenční řízení oprávnění, například veřejné formuláře vyžadující vlastní ověření heslem, dynamické posuzování oprávnění na základě parametrů požadavku atd.
Typické aplikační scénáře:
Řízení oprávnění pomocí ctx.permission:
Popis vlastností ctx.permission:
skip: true:: Přeskočí následné kontroly oprávnění ACL a přímo povolí přístup.Lze dynamicky nastavit v middleware na základě vlastní logiky pro dosažení flexibilního řízení oprávnění.addFixedParams umožňuje přidat pevné omezení rozsahu dat (filtr) k operacím s určitými prostředky. Tato omezení obcházejí omezení rolí a jsou aplikována přímo, obvykle se používají k ochraně kritických systémových dat.
Tip:
addFixedParamslze použít k zabránění náhodnému smazání nebo úpravě citlivých dat, jako jsou systémové vestavěné role, administrátorské účty atd. Tato omezení se sčítají s oprávněními rolí a zajišťují, že i s oprávněním nelze manipulovat s chráněnými daty.
acl.can() slouží k ověření, zda má daná role oprávnění provést specifikovanou operaci, a vrací objekt s výsledkem oprávnění nebo null. Běžně se používá v obchodní logice pro dynamické posuzování oprávnění, například v middleware nebo handlerech operací, kde se na základě rolí rozhoduje, zda je povoleno provést určité akce.
Tip: Pokud předáte více rolí, každá role bude zkontrolována postupně a vrátí se výsledek pro první roli, která má oprávnění.
Definice typů:
Pokud chcete, aby vlastní operace byly konfigurovatelné v uživatelském rozhraní (například zobrazené na stránce správy rolí), musíte je zaregistrovat pomocí setAvailableAction. Zaregistrované operace se objeví v rozhraní pro konfiguraci oprávnění, kde administrátoři mohou nastavit oprávnění pro různé role.
Popis parametrů:
: Název zobrazený v rozhraní pro konfiguraci oprávnění, podporuje internacionalizaci (používá formát {{t("key")}}).: Typ operace, který určuje klasifikaci této operace v konfiguraci oprávnění.
'new-data':: Operace, které vytvářejí nová data (např. import, přidání atd.).'existing-data':: Operace, které upravují existující data (např. aktualizace, smazání atd.).: Zda se projeví při vytváření nových záznamů, platné pouze pro typ 'new-data'.Po registraci se tato operace objeví v rozhraní pro konfiguraci oprávnění, kde administrátoři mohou nastavit oprávnění pro tuto operaci na stránce správy rolí.