| <!doctype html> |
| <html lang="de" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-api-overview" data-has-hydrated="false"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="generator" content="Docusaurus v3.9.2"> |
| <title data-rh="true">Overview | Casbin</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://casbin.org/de/docs/api-overview"><meta data-rh="true" property="og:locale" content="de"><meta data-rh="true" property="og:locale:alternate" content="en"><meta data-rh="true" property="og:locale:alternate" content="zh"><meta data-rh="true" property="og:locale:alternate" content="ko"><meta data-rh="true" property="og:locale:alternate" content="ru"><meta data-rh="true" property="og:locale:alternate" content="fr"><meta data-rh="true" property="og:locale:alternate" content="ja"><meta data-rh="true" property="og:locale:alternate" content="es"><meta data-rh="true" property="og:locale:alternate" content="pt"><meta data-rh="true" property="og:locale:alternate" content="uk"><meta data-rh="true" property="og:locale:alternate" content="th"><meta data-rh="true" property="og:locale:alternate" content="ar"><meta data-rh="true" property="og:locale:alternate" content="id"><meta data-rh="true" property="og:locale:alternate" content="vi"><meta data-rh="true" property="og:locale:alternate" content="it"><meta data-rh="true" property="og:locale:alternate" content="ms"><meta data-rh="true" property="og:locale:alternate" content="tr"><meta data-rh="true" name="docusaurus_locale" content="de"><meta data-rh="true" name="docsearch:language" content="de"><meta data-rh="true" name="Casbin" content="An authorization library that supports access control models like ACL, RBAC, ABAC, ReBAC, PBAC, OrBAC, BLP, Biba, LBAC, UCON for Golang, Java, C/C++, Node.js, Javascript, PHP, Laravel, Python, .NET (C#), Delphi, Rust, Ruby, Swift (Objective-C), Lua (OpenResty), Dart (Flutter) and Elixir"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Overview | Casbin"><meta data-rh="true" name="description" content="Casbin API-Nutzung"><meta data-rh="true" property="og:description" content="Casbin API-Nutzung"><meta data-rh="true" name="keywords" content="API overview,API,API usage"><link data-rh="true" rel="icon" href="/de/img/favicon.png"><link data-rh="true" rel="canonical" href="https://casbin.org/de/docs/api-overview"><link data-rh="true" rel="alternate" href="https://casbin.org/docs/api-overview" hreflang="en"><link data-rh="true" rel="alternate" href="https://casbin.org/zh/docs/api-overview" hreflang="zh"><link data-rh="true" rel="alternate" href="https://casbin.org/ko/docs/api-overview" hreflang="ko"><link data-rh="true" rel="alternate" href="https://casbin.org/ru/docs/api-overview" hreflang="ru"><link data-rh="true" rel="alternate" href="https://casbin.org/fr/docs/api-overview" hreflang="fr"><link data-rh="true" rel="alternate" href="https://casbin.org/de/docs/api-overview" hreflang="de"><link data-rh="true" rel="alternate" href="https://casbin.org/ja/docs/api-overview" hreflang="ja"><link data-rh="true" rel="alternate" href="https://casbin.org/es/docs/api-overview" hreflang="es"><link data-rh="true" rel="alternate" href="https://casbin.org/pt/docs/api-overview" hreflang="pt"><link data-rh="true" rel="alternate" href="https://casbin.org/uk/docs/api-overview" hreflang="uk"><link data-rh="true" rel="alternate" href="https://casbin.org/th/docs/api-overview" hreflang="th"><link data-rh="true" rel="alternate" href="https://casbin.org/ar/docs/api-overview" hreflang="ar"><link data-rh="true" rel="alternate" href="https://casbin.org/id/docs/api-overview" hreflang="id"><link data-rh="true" rel="alternate" href="https://casbin.org/vi/docs/api-overview" hreflang="vi"><link data-rh="true" rel="alternate" href="https://casbin.org/it/docs/api-overview" hreflang="it"><link data-rh="true" rel="alternate" href="https://casbin.org/ms/docs/api-overview" hreflang="ms"><link data-rh="true" rel="alternate" href="https://casbin.org/tr/docs/api-overview" hreflang="tr"><link data-rh="true" rel="alternate" href="https://casbin.org/docs/api-overview" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://6NBEV8TOFK-dsn.algolia.net" crossorigin="anonymous"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"API","item":"https://casbin.org/de/docs/category/api"},{"@type":"ListItem","position":2,"name":"Overview","item":"https://casbin.org/de/docs/api-overview"}]}</script><link rel="alternate" type="application/rss+xml" href="/de/blog/rss.xml" title="Casbin RSS Feed"> |
| <link rel="alternate" type="application/atom+xml" href="/de/blog/atom.xml" title="Casbin Atom Feed"> |
| |
| <link rel="preconnect" href="https://www.google-analytics.com"> |
| <link rel="preconnect" href="https://www.googletagmanager.com"> |
| <script async src="https://www.googletagmanager.com/gtag/js?id=G-8S2TKCJ27X"></script> |
| <script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-8S2TKCJ27X",{})</script> |
| |
| |
| |
| <link rel="search" type="application/opensearchdescription+xml" title="Casbin" href="/de/opensearch.xml"> |
| <script src="/js/hotjar.js" async></script> |
| <script src="/js/probe.js" async></script> |
| <script src="/js/clarity.js" async></script><link rel="stylesheet" href="/de/assets/css/styles.7dd62f2b.css"> |
| <script src="/de/assets/js/runtime~main.a9eabe0e.js" defer="defer"></script> |
| <script src="/de/assets/js/main.e41d15e1.js" defer="defer"></script> |
| </head> |
| <body class="navigation-with-keyboard"> |
| <svg style="display: none;"><defs> |
| <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol> |
| </defs></svg> |
| <script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||(window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light")),document.documentElement.setAttribute("data-theme-choice",t||"system")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Zum Hauptinhalt springen"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Zum Hauptinhalt springen</a></div><nav aria-label="Haupt" class="theme-layout-navbar navbar navbar--fixed-top navbarHideable_m1mJ"><div class="navbar__inner"><div class="theme-layout-navbar-left navbar__items"><button aria-label="Navigationsleiste umschalten" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/de/"><div class="navbar__logo"><img src="https://cdn.casbin.org/img/casbin_logo_1024x256.png" alt="Casbin Logo" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="https://cdn.casbin.org/img/casbin_logo_1024x256.png" alt="Casbin Logo" class="themedComponent_mlkZ themedComponent--dark_xIcU"></div><b class="navbar__title text--truncate"></b></a><div class="navbar__item dropdown dropdown--hoverable"><a class="navbar__link" aria-haspopup="true" aria-expanded="false" role="button" href="/de/docs/overview">Texte</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/de/docs/get-started">Los geht's</a></li><li><a class="dropdown__link" href="/de/docs/category/model">Modell</a></li><li><a class="dropdown__link" href="/de/docs/category/storage">Speicher</a></li><li><a class="dropdown__link" href="/de/docs/adapters">Adapter</a></li><li><a class="dropdown__link" href="/de/docs/category/api">API</a></li><li><a class="dropdown__link" href="/de/docs/ide-plugins">IDE-Plugins</a></li><li><a class="dropdown__link" href="/de/docs/contributing">Beginne mitzuwirken</a></li></ul></div><a class="navbar__item navbar__link" href="/de/ecosystem">Plugins</a><a class="navbar__item navbar__link" href="/de/gallery">Authorization Models</a><a class="navbar__item navbar__link" href="/de/editor">GUI Policy Editor</a><a class="navbar__item navbar__link" href="/de/blog">Blog</a><a class="navbar__item navbar__link" href="/de/help">Hilfe</a></div><div class="theme-layout-navbar-right navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link"><svg viewBox="0 0 24 24" width="20" height="20" aria-hidden="true" class="iconLanguage_nlXk"><path fill="currentColor" d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"></path></svg>Deutsch</a><ul class="dropdown__menu"><li><a href="/docs/api-overview" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="en">English</a></li><li><a href="/zh/docs/api-overview" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="zh">中文</a></li><li><a href="/ko/docs/api-overview" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="ko">한국어</a></li><li><a href="/ru/docs/api-overview" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="ru">Русский</a></li><li><a href="/fr/docs/api-overview" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="fr">Français</a></li><li><a href="/de/docs/api-overview" target="_self" rel="noopener noreferrer" class="dropdown__link dropdown__link--active" lang="de">Deutsch</a></li><li><a href="/ja/docs/api-overview" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="ja">日本語</a></li><li><a href="/es/docs/api-overview" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="es">Español</a></li><li><a href="/pt/docs/api-overview" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="pt">Português</a></li><li><a href="/uk/docs/api-overview" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="uk">Українська</a></li><li><a href="/th/docs/api-overview" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="th">ไทย</a></li><li><a href="/ar/docs/api-overview" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="ar">العربية</a></li><li><a href="/id/docs/api-overview" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="id">Indonesia</a></li><li><a href="/vi/docs/api-overview" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="vi">Tiếng Việt</a></li><li><a href="/it/docs/api-overview" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="it">Italiano</a></li><li><a href="/ms/docs/api-overview" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="ms">Melayu</a></li><li><a href="/tr/docs/api-overview" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="tr">Türkçe</a></li><li class=""><hr style="margin: 0.3rem 0;"></li><li><a href="https://crowdin.com/project/casbin-website" target="_blank" rel="noopener noreferrer" class="dropdown__link">Help Us Translate<svg width="12" height="12" aria-label="(opens in new tab)" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div><a href="https://github.com/casbin/casbin" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-github-link" aria-label="GitHub repository"></a><a href="https://discord.gg/S5UjpzGZjN" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-community-discord"></a><div class="navbarSearchContainer_Bca1"><button type="button" class="DocSearch DocSearch-Button" aria-label="Suchen (Meta+k)" aria-keyshortcuts="Meta+k"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 24 24" aria-hidden="true"><circle cx="11" cy="11" r="8" stroke="currentColor" fill="none" stroke-width="1.4"></circle><path d="m21 21-4.3-4.3" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Suchen</span></span><span class="DocSearch-Button-Keys"></span></button></div><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="system mode" aria-label="Zwischen Dunkel- und Lichtmodus wechseln (derzeit system mode)"><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP systemToggleIcon_QzmC"><path fill="currentColor" d="m12 21c4.971 0 9-4.029 9-9s-4.029-9-9-9-9 4.029-9 9 4.029 9 9 9zm4.95-13.95c1.313 1.313 2.05 3.093 2.05 4.95s-0.738 3.637-2.05 4.95c-1.313 1.313-3.093 2.05-4.95 2.05v-14c1.857 0 3.637 0.737 4.95 2.05z"></path></svg></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="theme-layout-main main-wrapper mainWrapper_z2l0"><div class="docsWrapper_hBAB"><button aria-label="Zurück nach oben scrollen" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docRoot_UBD9"><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class="sidebarViewport_aRkj"><div class="sidebar_njMd sidebarWithHideableNavbar_wUlq"><a tabindex="-1" class="sidebarLogo_isFc" href="/de/"><img src="https://cdn.casbin.org/img/casbin_logo_1024x256.png" alt="Casbin Logo" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="https://cdn.casbin.org/img/casbin_logo_1024x256.png" alt="Casbin Logo" class="themedComponent_mlkZ themedComponent--dark_xIcU"><b></b></a><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist" href="/de/docs/category/the-basics"><span title="Die Grundlagen" class="categoryLinkLabel_W154">Die Grundlagen</span></a><button aria-label="Collapse sidebar category 'Die Grundlagen'" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/overview"><span title="Overview" class="linkLabel_WmDU">Overview</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/get-started"><span title="Get Started" class="linkLabel_WmDU">Get Started</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/how-it-works"><span title="How It Works" class="linkLabel_WmDU">How It Works</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/tutorials"><span title="Tutorials" class="linkLabel_WmDU">Tutorials</span></a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist" href="/de/docs/category/model"><span title="Modell" class="categoryLinkLabel_W154">Modell</span></a><button aria-label="Collapse sidebar category 'Modell'" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/supported-models"><span title="Supported Models" class="linkLabel_WmDU">Supported Models</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/syntax-for-models"><span title="Syntax for Models" class="linkLabel_WmDU">Syntax for Models</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/effector"><span title="Effector" class="linkLabel_WmDU">Effector</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/function"><span title="Functions" class="linkLabel_WmDU">Functions</span></a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist" tabindex="0" href="/de/docs/rbac-overview"><span title="RBAC" class="categoryLinkLabel_W154">RBAC</span></a><button aria-label="Collapse sidebar category 'RBAC'" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/rbac"><span title="RBAC" class="linkLabel_WmDU">RBAC</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/rbac-with-pattern"><span title="RBAC with Pattern" class="linkLabel_WmDU">RBAC with Pattern</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/rbac-with-domains"><span title="RBAC with Domains" class="linkLabel_WmDU">RBAC with Domains</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/rbac-with-conditions"><span title="RBAC with Conditions" class="linkLabel_WmDU">RBAC with Conditions</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/rbac-96"><span title="Casbin RBAC vs. RBAC96" class="linkLabel_WmDU">Casbin RBAC vs. RBAC96</span></a></li></ul></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/rebac"><span title="ReBAC" class="linkLabel_WmDU">ReBAC</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/abac"><span title="ABAC" class="linkLabel_WmDU">ABAC</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/pbac"><span title="PBAC" class="linkLabel_WmDU">PBAC</span></a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist" tabindex="0" href="/de/docs/mac-overview"><span title="MAC" class="categoryLinkLabel_W154">MAC</span></a><button aria-label="Collapse sidebar category 'MAC'" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/blp"><span title="BLP" class="linkLabel_WmDU">BLP</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/biba"><span title="Biba" class="linkLabel_WmDU">Biba</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/lbac"><span title="LBAC" class="linkLabel_WmDU">LBAC</span></a></li></ul></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/orbac"><span title="OrBAC" class="linkLabel_WmDU">OrBAC</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/priority-model"><span title="Priority Model" class="linkLabel_WmDU">Priority Model</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/ucon"><span title="Usage Control (UCON)" class="linkLabel_WmDU">Usage Control (UCON)</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/superadmin"><span title="Super Admin" class="linkLabel_WmDU">Super Admin</span></a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist" href="/de/docs/category/storage"><span title="Speicher" class="categoryLinkLabel_W154">Speicher</span></a><button aria-label="Collapse sidebar category 'Speicher'" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/model-storage"><span title="Model Storage" class="linkLabel_WmDU">Model Storage</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/policy-storage"><span title="Policy Storage" class="linkLabel_WmDU">Policy Storage</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/policy-subset-loading"><span title="Policy Subset Loading" class="linkLabel_WmDU">Policy Subset Loading</span></a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist" href="/de/docs/category/scenarios"><span title="Scenarios" class="categoryLinkLabel_W154">Scenarios</span></a><button aria-label="Collapse sidebar category 'Scenarios'" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/data-permissions"><span title="Data Permissions" class="linkLabel_WmDU">Data Permissions</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/menu-permissions"><span title="Menu Permissions" class="linkLabel_WmDU">Menu Permissions</span></a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist" href="/de/docs/plugins-overview"><span title="Plugins" class="categoryLinkLabel_W154">Plugins</span></a><button aria-label="Collapse sidebar category 'Plugins'" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/enforcers"><span title="Enforcers" class="linkLabel_WmDU">Enforcers</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/adapters"><span title="Adapters" class="linkLabel_WmDU">Adapters</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/watchers"><span title="Watchers" class="linkLabel_WmDU">Watchers</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/dispatchers"><span title="Dispatchers" class="linkLabel_WmDU">Dispatchers</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/role-managers"><span title="Role Managers" class="linkLabel_WmDU">Role Managers</span></a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist" tabindex="0" href="/de/docs/middlewares"><span title="Middlewares" class="categoryLinkLabel_W154">Middlewares</span></a><button aria-label="Collapse sidebar category 'Middlewares'" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/kong-authz"><span title="Kong" class="linkLabel_WmDU">Kong</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/graphql-middlewares"><span title="GraphQL" class="linkLabel_WmDU">GraphQL</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/cloud-native"><span title="Cloud Native" class="linkLabel_WmDU">Cloud Native</span></a></li></ul></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--active" href="/de/docs/category/api"><span title="API" class="categoryLinkLabel_W154">API</span></a><button aria-label="Collapse sidebar category 'API'" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/de/docs/api-overview"><span title="Overview" class="linkLabel_WmDU">Overview</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/management-api"><span title="Management API" class="linkLabel_WmDU">Management API</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/rbac-api"><span title="RBAC API" class="linkLabel_WmDU">RBAC API</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/rbac-with-domains-api"><span title="RBAC with Domains API" class="linkLabel_WmDU">RBAC with Domains API</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/rbac-with-conditions-api"><span title="RBAC with Conditions API" class="linkLabel_WmDU">RBAC with Conditions API</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/rolemanager-api"><span title="RoleManager API" class="linkLabel_WmDU">RoleManager API</span></a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist" href="/de/docs/category/advanced-usage"><span title="Erweiterte Nutzung" class="categoryLinkLabel_W154">Erweiterte Nutzung</span></a><button aria-label="Collapse sidebar category 'Erweiterte Nutzung'" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/multi-threading"><span title="Multi-threading" class="linkLabel_WmDU">Multi-threading</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/benchmark"><span title="Benchmarks" class="linkLabel_WmDU">Benchmarks</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/performance"><span title="Performance Optimization" class="linkLabel_WmDU">Performance Optimization</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/k8s"><span title="Authorization of Kubernetes" class="linkLabel_WmDU">Authorization of Kubernetes</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/k8s-gatekeeper"><span title="Admission Webhook for K8s" class="linkLabel_WmDU">Admission Webhook for K8s</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/envoy"><span title="Authorization of Service Mesh through Envoy" class="linkLabel_WmDU">Authorization of Service Mesh through Envoy</span></a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist" href="/de/docs/category/management"><span title="Management" class="categoryLinkLabel_W154">Management</span></a><button aria-label="Collapse sidebar category 'Management'" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/admin-portal"><span title="Admin Portal" class="linkLabel_WmDU">Admin Portal</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/service"><span title="Casbin Service" class="linkLabel_WmDU">Casbin Service</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/command-line-tools"><span title="Command-line Tools" class="linkLabel_WmDU">Command-line Tools</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/log-error"><span title="Log & Error Handling" class="linkLabel_WmDU">Log & Error Handling</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/frontend"><span title="Frontend Usage" class="linkLabel_WmDU">Frontend Usage</span></a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist" href="/de/docs/category/editor"><span title="Redakteur" class="categoryLinkLabel_W154">Redakteur</span></a><button aria-label="Collapse sidebar category 'Redakteur'" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/online-editor"><span title="Online Editor" class="linkLabel_WmDU">Online Editor</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/ide-plugins"><span title="IDE Plugins" class="linkLabel_WmDU">IDE Plugins</span></a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist" href="/de/docs/category/more"><span title="Mehr" class="categoryLinkLabel_W154">Mehr</span></a><button aria-label="Collapse sidebar category 'Mehr'" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/adopters"><span title="Our Adopters" class="linkLabel_WmDU">Our Adopters</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/contributing"><span title="Contributing" class="linkLabel_WmDU">Contributing</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/privacy-policy"><span title="Privacy Policy" class="linkLabel_WmDU">Privacy Policy</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/de/docs/terms-of-service"><span title="Terms of Service" class="linkLabel_WmDU">Terms of Service</span></a></li></ul></li></ul></nav><button type="button" title="Seitenleiste einklappen" aria-label="Seitenleiste einklappen" class="button button--secondary button--outline collapseSidebarButton_PEFL"><svg width="20" height="20" aria-hidden="true" class="collapseSidebarButtonIcon_kv0_"><g fill="#7a7a7a"><path d="M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"></path><path d="M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"></path></g></svg></button></div></div></aside><main class="docMainContainer_TBSr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs"><li class="breadcrumbs__item"><a aria-label="Startseite" class="breadcrumbs__link" href="/de/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><a class="breadcrumbs__link" href="/de/docs/category/api"><span>API</span></a></li><li class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link">Overview</span></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">Auf dieser Seite</button></div><div class="theme-doc-markdown markdown"><header><h1>Overview</h1></header><p>Diese Übersicht zeigt Ihnen nur, wie Sie die Casbin APIs verwenden und erklärt nicht, wie Casbin installiert wird oder wie es funktioniert. Diese Tutorials finden Sie hier: <a class="" href="/de/docs/get-started">Installation von Casbin</a> und <a class="" href="/de/docs/how-it-works">Wie Casbin funktioniert</a>. Wenn Sie also mit der Lektüre dieses Tutorials beginnen, gehen wir davon aus, dass Sie Casbin vollständig installiert und in Ihren Code importiert haben.</p> |
| <h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="enforce-api">Enforce API<a href="#enforce-api" class="hash-link" aria-label="Direkter Link zu Enforce API" title="Direkter Link zu Enforce API" translate="no"></a></h2> |
| <p>Beginnen wir mit den Enforce APIs von Casbin. Wir werden ein RBAC-Modell aus <code>model.conf</code> laden und Richtlinien aus <code>policy.csv</code> laden. Sie können die Syntax des Modells <a class="" href="/de/docs/syntax-for-models">hier</a> kennenlernen, und wir werden sie in diesem Tutorial nicht diskutieren. Wir gehen davon aus, dass Sie die unten gegebenen Konfigurationsdateien verstehen können:</p> |
| <p><code>model.conf</code></p> |
| <div class="language-ini codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ini codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token section punctuation" style="color:#393A34">[</span><span class="token section section-name selector" style="color:#00009f">request_definition</span><span class="token section punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key attr-name" style="color:#00a4db">r</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">=</span><span class="token plain"> </span><span class="token value attr-value" style="color:#e3116c">sub, obj, act</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token section punctuation" style="color:#393A34">[</span><span class="token section section-name selector" style="color:#00009f">policy_definition</span><span class="token section punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key attr-name" style="color:#00a4db">p</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">=</span><span class="token plain"> </span><span class="token value attr-value" style="color:#e3116c">sub, obj, act</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token section punctuation" style="color:#393A34">[</span><span class="token section section-name selector" style="color:#00009f">role_definition</span><span class="token section punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key attr-name" style="color:#00a4db">g</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">=</span><span class="token plain"> </span><span class="token value attr-value" style="color:#e3116c">_, _</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token section punctuation" style="color:#393A34">[</span><span class="token section section-name selector" style="color:#00009f">policy_effect</span><span class="token section punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key attr-name" style="color:#00a4db">e</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">=</span><span class="token plain"> </span><span class="token value attr-value" style="color:#e3116c">some(where (p.eft == allow))</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token section punctuation" style="color:#393A34">[</span><span class="token section section-name selector" style="color:#00009f">matchers</span><span class="token section punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key attr-name" style="color:#00a4db">m</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">=</span><span class="token plain"> </span><span class="token value attr-value" style="color:#e3116c">g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act</span><br></span></code></pre></div></div> |
| <p><code>policy.csv</code></p> |
| <div class="language-csv codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-csv codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token value">p</span><span class="token punctuation" style="color:#393A34">,</span><span class="token value"> admin</span><span class="token punctuation" style="color:#393A34">,</span><span class="token value"> data1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token value"> read</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token value">p</span><span class="token punctuation" style="color:#393A34">,</span><span class="token value"> admin</span><span class="token punctuation" style="color:#393A34">,</span><span class="token value"> data1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token value"> write</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token value">p</span><span class="token punctuation" style="color:#393A34">,</span><span class="token value"> admin</span><span class="token punctuation" style="color:#393A34">,</span><span class="token value"> data2</span><span class="token punctuation" style="color:#393A34">,</span><span class="token value"> read</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token value">p</span><span class="token punctuation" style="color:#393A34">,</span><span class="token value"> admin</span><span class="token punctuation" style="color:#393A34">,</span><span class="token value"> data2</span><span class="token punctuation" style="color:#393A34">,</span><span class="token value"> write</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token value">p</span><span class="token punctuation" style="color:#393A34">,</span><span class="token value"> alice</span><span class="token punctuation" style="color:#393A34">,</span><span class="token value"> data1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token value"> read</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token value">p</span><span class="token punctuation" style="color:#393A34">,</span><span class="token value"> bob</span><span class="token punctuation" style="color:#393A34">,</span><span class="token value"> data2</span><span class="token punctuation" style="color:#393A34">,</span><span class="token value"> write</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token value">g</span><span class="token punctuation" style="color:#393A34">,</span><span class="token value"> amber</span><span class="token punctuation" style="color:#393A34">,</span><span class="token value"> admin</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token value">g</span><span class="token punctuation" style="color:#393A34">,</span><span class="token value"> abc</span><span class="token punctuation" style="color:#393A34">,</span><span class="token value"> admin</span><br></span></code></pre></div></div> |
| <p>Nachdem Sie die Konfigurationsdateien gelesen haben, lesen Sie bitte den folgenden Code.</p> |
| <div class="language-go codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-go codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Load information from files.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">enforcer</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> err </span><span class="token operator" style="color:#393A34">:=</span><span class="token plain"> casbin</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">NewEnforcer</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"./example/model.conf"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"./example/policy.csv"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> err </span><span class="token operator" style="color:#393A34">!=</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">nil</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> log</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Fatalf</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"Error, detail: %s"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> err</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ok</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> err </span><span class="token operator" style="color:#393A34">:=</span><span class="token plain"> enforcer</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Enforce</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"alice"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"data1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"read"</span><span class="token punctuation" style="color:#393A34">)</span><br></span></code></pre></div></div> |
| <p>Dieser Code lädt das Zugriffskontrollmodell und die Richtlinien aus lokalen Dateien. Die Funktion <code>casbin.NewEnforcer()</code> gibt einen Durchsetzer zurück. Es erkennt seine beiden Parameter als Dateipfade und lädt die Dateien von dort. Fehler, die im Prozess aufgetreten sind, werden in der Variablen <code>err</code> gespeichert. Dieser Code verwendet den Standardadapter zum Laden des Modells und der Richtlinien, und natürlich können Sie das gleiche Ergebnis mit einem Drittanbieter-Adapter erzielen.</p> |
| <p>Der Code <code>ok, err := enforcer.Enforce("alice", "data1", "read")</code> wird verwendet, um Zugriffsberechtigungen zu bestätigen. Wenn Alice auf data1 mit der Leseoperation zugreifen kann, wird der zurückgegebene Wert von <code>ok</code> <code>true</code> sein; andernfalls wird er <code>false</code> sein. In diesem Beispiel ist der Wert von <code>ok</code> <code>true</code>.</p> |
| <h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="enforceex-api">EnforceEx API<a href="#enforceex-api" class="hash-link" aria-label="Direkter Link zu EnforceEx API" title="Direkter Link zu EnforceEx API" translate="no"></a></h2> |
| <p>Manchmal fragen Sie sich vielleicht, welche Richtlinie die Anfrage erlaubt hat, daher haben wir die Funktion <code>EnforceEx()</code> vorbereitet. Sie können es so verwenden:</p> |
| <div class="language-go codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-go codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">ok</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> reason</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> err </span><span class="token operator" style="color:#393A34">:=</span><span class="token plain"> enforcer</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">EnforceEx</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"amber"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"data1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"read"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">fmt</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Println</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">ok</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> reason</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// true [admin data1 read]</span><br></span></code></pre></div></div> |
| <p>Die Funktion <code>EnforceEx()</code> gibt den genauen Richtlinienstring im Rückgabewert <code>reason</code> zurück. In diesem Beispiel ist <code>amber</code> eine <code>admin</code>-Rolle, daher hat die Richtlinie <code>p, admin, data1, read</code> diese Anfrage auf <code>true</code> zugelassen. Die Ausgabe dieses Codes steht im Kommentar.</p> |
| <p>Casbin hat viele APIs bereitgestellt, die dieser ähnlich sind. Diese APIs fügen den grundlegenden Funktionen einige zusätzliche Funktionen hinzu. Dazu gehören:</p> |
| <ul> |
| <li class=""> |
| <p><code>ok, err := enforcer.EnforceWithMatcher(matcher, request)</code></p> |
| <p>Diese Funktion verwendet einen Matcher.</p> |
| </li> |
| <li class=""> |
| <p><code>ok, reason, err := enforcer.EnforceExWithMatcher(matcher, request)</code></p> |
| <p>Dies ist eine Kombination aus <code>EnforceWithMatcher()</code> und <code>EnforceEx()</code>.</p> |
| </li> |
| <li class=""> |
| <p><code>boolArray, err := enforcer.BatchEnforce(requests)</code></p> |
| <p>Diese Funktion ermöglicht eine Liste von Jobs und gibt ein Array zurück.</p> |
| </li> |
| </ul> |
| <p>Dies ist ein einfacher Anwendungsfall von Casbin. Sie können Casbin verwenden, um einen Autorisierungsserver mit diesen APIs zu starten. Wir werden Ihnen einige andere Arten von APIs in den folgenden Absätzen zeigen.</p> |
| <h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="management-api">Management API<a href="#management-api" class="hash-link" aria-label="Direkter Link zu Management API" title="Direkter Link zu Management API" translate="no"></a></h2> |
| <h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="get-api">Get API<a href="#get-api" class="hash-link" aria-label="Direkter Link zu Get API" title="Direkter Link zu Get API" translate="no"></a></h3> |
| <p>Diese APIs werden verwendet, um spezifische Objekte in Richtlinien abzurufen. In diesem Beispiel laden wir einen Durchsetzer und holen etwas davon ab.</p> |
| <p>Bitte schauen Sie sich den folgenden Code an:</p> |
| <div class="language-go codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-go codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">enforcer</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> err </span><span class="token operator" style="color:#393A34">:=</span><span class="token plain"> casbin</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">NewEnforcer</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"./example/model.conf"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"./example/policy.csv"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> err </span><span class="token operator" style="color:#393A34">!=</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">nil</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> fmt</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Printf</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"Error, details: %s\n"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> err</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">allSubjects </span><span class="token operator" style="color:#393A34">:=</span><span class="token plain"> enforcer</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">GetAllSubjects</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">fmt</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Println</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">allSubjects</span><span class="token punctuation" style="color:#393A34">)</span><br></span></code></pre></div></div> |
| <p>Ähnlich wie im vorherigen Beispiel werden die ersten vier Zeilen verwendet, um notwendige Informationen aus lokalen Dateien zu laden. Wir werden das hier nicht weiter diskutieren.</p> |
| <p>Der Code <code>allSubjects := enforcer.GetAllSubjects()</code> ruft alle Subjekte in der Richtliniendatei ab und gibt sie als Array zurück. Wir drucken dann dieses Array.</p> |
| <p>Typischerweise sollte die Ausgabe des Codes folgendermaßen aussehen:</p> |
| <div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">[admin alice bob]</span><br></span></code></pre></div></div> |
| <p>Sie können auch die Funktion <code>GetAllSubjects()</code> in <code>GetAllNamedSubjects()</code> ändern, um die Liste der Subjekte zu erhalten, die in der aktuellen benannten Richtlinie erscheinen.</p> |
| <p>Ebenso haben wir <code>GetAll</code> Funktionen für <code>Objects, Actions, Roles</code> vorbereitet. Um auf diese Funktionen zuzugreifen, müssen Sie einfach das Wort <code>Subject</code> im Funktionsnamen durch die gewünschte Kategorie ersetzen.</p> |
| <p>Zusätzlich gibt es weitere Getter für Richtlinien. Die Methode des Aufrufens und die Rückgabewerte ähneln den oben genannten.</p> |
| <ul> |
| <li class=""><code>policy = e.GetPolicy()</code> ruft alle Autorisierungsregeln in der Richtlinie ab.</li> |
| <li class=""><code>filteredPolicy := e.GetFilteredPolicy(0, "alice")</code> ruft alle Autorisierungsregeln in der Richtlinie mit spezifizierten Feldfiltern ab.</li> |
| <li class=""><code>namedPolicy := e.GetNamedPolicy("p")</code> ruft alle Autorisierungsregeln in der benannten Richtlinie ab.</li> |
| <li class=""><code>filteredNamedPolicy = e.GetFilteredNamedPolicy("p", 0, "bob")</code> ruft alle Autorisierungsregeln in der benannten Richtlinie mit spezifizierten Feldfiltern ab.</li> |
| <li class=""><code>groupingPolicy := e.GetGroupingPolicy()</code> ruft alle Rollenvererbungsregeln in der Richtlinie ab.</li> |
| <li class=""><code>filteredGroupingPolicy := e.GetFilteredGroupingPolicy(0, "alice")</code> ruft alle Rollenvererbungsregeln in der Richtlinie mit spezifizierten Feldfiltern ab.</li> |
| <li class=""><code>namedGroupingPolicy := e.GetNamedGroupingPolicy("g")</code> ruft alle Rollenvererbungsregeln in der Richtlinie ab.</li> |
| <li class=""><code>namedGroupingPolicy := e.GetFilteredNamedGroupingPolicy("g", 0, "alice")</code> ruft alle Rollenvererbungsregeln in der Richtlinie mit spezifizierten Feldfiltern ab.</li> |
| </ul> |
| <h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="add-delete-update-api">Add, Delete, Update API<a href="#add-delete-update-api" class="hash-link" aria-label="Direkter Link zu Add, Delete, Update API" title="Direkter Link zu Add, Delete, Update API" translate="no"></a></h3> |
| <p>Casbin bietet eine Vielzahl von APIs zum dynamischen Hinzufügen, Löschen oder Ändern von Richtlinien zur Laufzeit.</p> |
| <p>Der folgende Code zeigt, wie man Richtlinien hinzufügt, entfernt und aktualisiert, sowie wie man überprüft, ob eine Richtlinie existiert:</p> |
| <div class="language-go codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-go codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// load information from files</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">enforcer</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> err </span><span class="token operator" style="color:#393A34">:=</span><span class="token plain"> casbin</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">NewEnforcer</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"./example/model.conf"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"./example/policy.csv"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> err </span><span class="token operator" style="color:#393A34">!=</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">nil</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> fmt</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Printf</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"Error, details: %s\n"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> err</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// add a policy and use HasPolicy() to confirm</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">enforcer</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">AddPolicy</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"added_user"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"data1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"read"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">hasPolicy </span><span class="token operator" style="color:#393A34">:=</span><span class="token plain"> enforcer</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">HasPolicy</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"added_user"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"data1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"read"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">fmt</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Println</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">hasPolicy</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// true, the policy was added successfully</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// remove a policy and use HasPolicy() to confirm</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">enforcer</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">RemovePolicy</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"alice"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"data1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"read"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">hasPolicy </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> enforcer</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">HasPolicy</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"alice"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"data1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"read"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">fmt</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Println</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">hasPolicy</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// false, the policy was removed successfully</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// update a policy and use HasPolicy() to confirm</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">enforcer</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">UpdatePolicy</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"added_user"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"data1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"read"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"added_user"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"data1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"write"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">hasPolicy </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> enforcer</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">HasPolicy</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"added_user"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"data1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"read"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">fmt</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Println</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">hasPolicy</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// false, the original policy has expired</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">hasPolicy </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> enforcer</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">HasPolicy</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"added_user"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"data1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"write"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">fmt</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Println</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">hasPolicy</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// true, the new policy is in effect</span><br></span></code></pre></div></div> |
| <p>Mit diesen APIs können Sie Ihre Richtlinien dynamisch bearbeiten. Ebenso haben wir ähnliche APIs für <code>FilteredPolicy, NamedPolicy, FilteredNamedPolicy, GroupingPolicy, NamedGroupingPolicy, FilteredGroupingPolicy, FilteredNamedGroupingPolicy</code> bereitgestellt. Um sie zu verwenden, ersetzen Sie einfach das Wort <code>Policy</code> im Funktionsnamen durch die entsprechende Kategorie.</p> |
| <p>Darüber hinaus können Sie durch Ändern der Parameter in Arrays eine Stapelbearbeitung Ihrer Richtlinien durchführen.</p> |
| <p>Betrachten Sie zum Beispiel Funktionen wie diese:</p> |
| <div class="language-go codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-go codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">enforcer</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">UpdatePolicy</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"eve"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"data3"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"read"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"eve"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"data3"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"write"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><br></span></code></pre></div></div> |
| <p>Wenn wir <code>Policy</code> zu <code>Policies</code> ändern und die Parameter wie folgt ändern:</p> |
| <div class="language-go codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-go codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">enforcer</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">UpdatePolicies</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"eve"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"data3"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"read"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"jack"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"data3"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"read"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"eve"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"data3"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"write"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"jack"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"data3"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"write"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><br></span></code></pre></div></div> |
| <p>dann können wir eine Stapelbearbeitung dieser Richtlinien durchführen.</p> |
| <p>Die gleichen Operationen können auch auf <code>GroupingPolicy, NamedGroupingPolicy</code> angewendet werden.</p> |
| <h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="addex-api">AddEx API<a href="#addex-api" class="hash-link" aria-label="Direkter Link zu AddEx API" title="Direkter Link zu AddEx API" translate="no"></a></h3> |
| <p>Casbin bietet die AddEx-Serie von APIs an, um Benutzern zu helfen, Regeln in Chargen hinzuzufügen.</p> |
| <div class="language-go codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-go codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">AddPoliciesEx</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">rules </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token builtin">bool</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token builtin">error</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">AddNamedPoliciesEx</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">ptype </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> rules </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token builtin">bool</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token builtin">error</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">AddGroupingPoliciesEx</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">rules </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token builtin">bool</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token builtin">error</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">AddNamedGroupingPoliciesEx</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">ptype </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> rules </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token builtin">bool</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token builtin">error</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">SelfAddPoliciesEx</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">sec </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> ptype </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> rules </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token builtin">bool</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token builtin">error</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><br></span></code></pre></div></div> |
| <p>Der Unterschied zwischen diesen Methoden und den Methoden ohne das Ex-Suffix besteht darin, dass sie, wenn eine der Regeln bereits existiert, die nächste Regel überprüfen, anstatt sofort false zurückzugeben.</p> |
| <p>Zum Beispiel vergleichen wir <code>AddPolicies</code> und <code>AddPoliciesEx</code>.</p> |
| <p>Sie können den folgenden Code ausführen und beobachten, indem Sie ihn in den Test unter Casbin kopieren.</p> |
| <div class="language-go codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-go codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">func</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">TestDemo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">t </span><span class="token operator" style="color:#393A34">*</span><span class="token plain">testing</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">T</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> e</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> err </span><span class="token operator" style="color:#393A34">:=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">NewEnforcer</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"examples/basic_model.conf"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"examples/basic_policy.csv"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> err </span><span class="token operator" style="color:#393A34">!=</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">nil</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> fmt</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Printf</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"Error, details: %s\n"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> err</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> e</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">ClearPolicy</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> e</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">AddPolicy</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"user1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"data1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"read"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> fmt</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Println</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">e</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">GetPolicy</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token function" style="color:#d73a49">testGetPolicy</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">t</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> e</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"user1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"data1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"read"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// policy {"user1", "data1", "read"} now exists</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Use AddPolicies to add rules in batches</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> ok</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">_</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">:=</span><span class="token plain"> e</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">AddPolicies</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"user1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"data1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"read"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"user2"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"data2"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"read"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> fmt</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Println</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">e</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">GetPolicy</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// {"user2", "data2", "read"} failed to add because {"user1", "data1", "read"} already exists</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// AddPolicies returns false and no other policies are checked, even though they may not exist in the existing ruleset</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// ok == false</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> fmt</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Println</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">ok</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token function" style="color:#d73a49">testGetPolicy</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">t</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> e</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"user1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"data1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"read"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Use AddPoliciesEx to add rules in batches</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> ok</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">_</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> e</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">AddPoliciesEx</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"user1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"data1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"read"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"user2"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"data2"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"read"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> fmt</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Println</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">e</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">GetPolicy</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// {"user2", "data2", "read"} is added successfully</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// because AddPoliciesEx automatically filters the existing {"user1", "data1", "read"}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// ok == true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> fmt</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Println</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">ok</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token function" style="color:#d73a49">testGetPolicy</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">t</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> e</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"user1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"data1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"read"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"user2"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"data2"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"read"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div> |
| <h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="rbac-api">RBAC API<a href="#rbac-api" class="hash-link" aria-label="Direkter Link zu RBAC API" title="Direkter Link zu RBAC API" translate="no"></a></h2> |
| <p>Casbin bietet einige APIs, mit denen Sie das RBAC-Modell und die Richtlinien ändern können. Wenn Sie mit RBAC vertraut sind, können Sie diese APIs leicht verwenden.</p> |
| <p>Hier zeigen wir Ihnen nur, wie Sie die RBAC-APIs von Casbin verwenden und sprechen nicht über RBAC selbst. Sie können mehr Details <a class="" href="/de/docs/rbac">hier</a> erhalten.</p> |
| <p>Wir verwenden den folgenden Code, um das Modell und die Richtlinien zu laden, genau wie zuvor.</p> |
| <div class="language-go codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-go codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">enforcer</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> err </span><span class="token operator" style="color:#393A34">:=</span><span class="token plain"> casbin</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">NewEnforcer</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"./example/model.conf"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"./example/policy.csv"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> err </span><span class="token operator" style="color:#393A34">!=</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">nil</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> fmt</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Printf</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"Error, details: %s\n"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> err</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div> |
| <p>Dann können wir eine Instanz des Enforcers <code>enforcer</code> verwenden, um auf diese APIs zuzugreifen.</p> |
| <div class="language-go codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-go codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">roles</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> err </span><span class="token operator" style="color:#393A34">:=</span><span class="token plain"> enforcer</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">GetRolesForUser</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"amber"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">fmt</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Println</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">roles</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// [admin]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">users</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> err </span><span class="token operator" style="color:#393A34">:=</span><span class="token plain"> enforcer</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">GetUsersForRole</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"admin"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">fmt</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Println</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">users</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// [amber abc]</span><br></span></code></pre></div></div> |
| <p><code>GetRolesForUser()</code> gibt ein Array zurück, das alle Rollen enthält, die Amber hat. In diesem Beispiel hat Amber nur eine Rolle, die Admin ist, daher ist das Array <code>roles</code> <code>[admin]</code>. Ebenso können Sie <code>GetUsersForRole()</code> verwenden, um die Benutzer zu erhalten, die zu einer Rolle gehören. Der Rückgabewert dieser Funktion ist ebenfalls ein Array.</p> |
| <div class="language-go codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-go codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">enforcer</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">HasRoleForUser</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"amber"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"admin"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// true</span><br></span></code></pre></div></div> |
| <p>Sie können <code>HasRoleForUser()</code> verwenden, um zu bestätigen, ob der Benutzer zur Rolle gehört. In diesem Beispiel ist Amber ein Mitglied von Admin, daher ist der Rückgabewert der Funktion <code>true</code>.</p> |
| <div class="language-go codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-go codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">fmt</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Println</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">enforcer</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Enforce</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"bob"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"data2"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"write"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">enforcer</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">DeletePermission</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"data2"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"write"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">fmt</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Println</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">enforcer</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Enforce</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"bob"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"data2"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"write"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// false</span><br></span></code></pre></div></div> |
| <p>Sie können <code>DeletePermission()</code> verwenden, um eine Berechtigung zu löschen.</p> |
| <div class="language-go codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-go codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">fmt</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Println</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">enforcer</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Enforce</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"alice"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"data1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"read"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">enforcer</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">DeletePermissionForUser</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"alice"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"data1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"read"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">fmt</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Println</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">enforcer</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Enforce</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"alice"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"data1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"read"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// false</span><br></span></code></pre></div></div> |
| <p>Und verwenden Sie <code>DeletePermissionForUser()</code>, um eine Berechtigung für einen Benutzer zu löschen.</p> |
| <p>Casbin hat viele APIs wie diese. Ihre Aufrufmethoden und Rückgabewerte haben den gleichen Stil wie die oben genannten APIs. You can find these APIs in the <a class="" href="/de/docs/rbac-api">next documents</a>.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_WFHX"><a href="https://github.com/casbin/casbin-website-v2/edit/master/docs/APIOverview.mdx" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Diese Seite bearbeiten</a></div><div class="col lastUpdated_JAkA"></div></div></footer></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="Docs-Seiten"><a class="pagination-nav__link pagination-nav__link--prev" href="/de/docs/category/api"><div class="pagination-nav__sublabel">Vorherige</div><div class="pagination-nav__label">API</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/de/docs/management-api"><div class="pagination-nav__sublabel">Nächste</div><div class="pagination-nav__label">Management API</div></a></nav><br></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#enforce-api" class="table-of-contents__link toc-highlight">Enforce API</a></li><li><a href="#enforceex-api" class="table-of-contents__link toc-highlight">EnforceEx API</a></li><li><a href="#management-api" class="table-of-contents__link toc-highlight">Management API</a><ul><li><a href="#get-api" class="table-of-contents__link toc-highlight">Get API</a></li><li><a href="#add-delete-update-api" class="table-of-contents__link toc-highlight">Add, Delete, Update API</a></li><li><a href="#addex-api" class="table-of-contents__link toc-highlight">AddEx API</a></li></ul></li><li><a href="#rbac-api" class="table-of-contents__link toc-highlight">RBAC API</a></li></ul></div></div></div></div></main></div></div></div><footer class="theme-layout-footer footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Texte</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/de/docs/get-started">Erste Schritte</a></li><li class="footer__item"><a class="footer__link-item" href="/de/docs/management-api">Management-API</a></li><li class="footer__item"><a class="footer__link-item" href="/de/docs/rbac-api">RBAC API</a></li><li class="footer__item"><a class="footer__link-item" href="/de/docs/middlewares">Middleware</a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"> |
| <a href="https://discord.gg/S5UjpzGZjN" target="_blank" rel="noopener noreferrer" class="footer__link-item footer-community-link"> |
| <svg class="footer-community-icon" viewBox="0 0 127.14 96.36" xmlns="http://www.w3.org/2000/svg"> |
| <path d="M107.7,8.07A105.15,105.15,0,0,0,81.47,0a72.06,72.06,0,0,0-3.36,6.83A97.68,97.68,0,0,0,49,6.83,72.37,72.37,0,0,0,45.64,0,105.89,105.89,0,0,0,19.39,8.09C2.79,32.65-1.71,56.6.54,80.21h0A105.73,105.73,0,0,0,32.71,96.36,77.7,77.7,0,0,0,39.6,85.25a68.42,68.42,0,0,1-10.85-5.18c.91-.66,1.8-1.34,2.66-2a75.57,75.57,0,0,0,64.32,0c.87.71,1.76,1.39,2.66,2a68.68,68.68,0,0,1-10.87,5.19,77,77,0,0,0,6.89,11.1A105.25,105.25,0,0,0,126.6,80.22h0C129.24,52.84,122.09,29.11,107.7,8.07ZM42.45,65.69C36.18,65.69,31,60,31,53s5-12.74,11.43-12.74S54,46,53.89,53,48.84,65.69,42.45,65.69Zm42.24,0C78.41,65.69,73.25,60,73.25,53s5-12.74,11.44-12.74S96.23,46,96.12,53,91.08,65.69,84.69,65.69Z"/> |
| </svg> |
| <span>Discord</span> |
| </a> |
| </li><li class="footer__item"> |
| <a href="https://stackoverflow.com/search?q=casbin" target="_blank" rel="noopener noreferrer" class="footer__link-item footer-community-link"> |
| <svg class="footer-community-icon" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> |
| <path d="M18.986 21.865v-6.404h2.134V24H1.844v-8.539h2.13v6.404h15.012zM6.111 19.731H16.85v-2.137H6.111v2.137zm.259-4.852l10.48 2.189.451-2.07-10.478-2.187-.453 2.068zm1.359-5.056l9.705 4.53.903-1.95-9.706-4.53-.902 1.936v.014zm2.715-4.785l8.217 6.855 1.359-1.62-8.216-6.853-1.35 1.617-.01.001zM15.751 0l-1.746 1.294 6.405 8.604 1.746-1.294L15.749 0h.002z"/> |
| </svg> |
| <span>Stack Overflow</span> |
| </a> |
| </li><li class="footer__item"> |
| <a href="https://groups.google.com/g/casbin" target="_blank" rel="noopener noreferrer" class="footer__link-item footer-community-link"> |
| <svg class="footer-community-icon" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> |
| <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 3c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm0 14.2c-2.5 0-4.71-1.28-6-3.22.03-1.99 4-3.08 6-3.08 1.99 0 5.97 1.09 6 3.08-1.29 1.94-3.5 3.22-6 3.22z"/> |
| </svg> |
| <span>Google Groups</span> |
| </a> |
| </li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Mehr</div><ul class="footer__items clean-list"><li class="footer__item"> |
| <a href="https://github.com/casbin/casbin" target="_blank"> |
| <img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/casbin/casbin?label=Casbin&style=social"> |
| </a> |
| |
| <a href="https://github.com/casbin/jcasbin" target="_blank"> |
| <img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/casbin/jcasbin?label=jCasbin&style=social"> |
| </a> |
| </li><li class="footer__item"> |
| <a href="https://github.com/casbin/node-casbin" target="_blank"> |
| <img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/casbin/node-casbin?label=Node-Casbin&style=social"> |
| </a> |
| |
| <a href="https://github.com/php-casbin/php-casbin" target="_blank"> |
| <img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/php-casbin/php-casbin?label=PHP-Casbin&style=social"> |
| </a> |
| </li><li class="footer__item"> |
| <a href="https://github.com/casbin/pycasbin" target="_blank"> |
| <img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/casbin/pycasbin?label=PyCasbin&style=social"> |
| </a> |
| |
| <a href="https://github.com/casbin/Casbin.NET" target="_blank"> |
| <img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/casbin/Casbin.NET?label=Casbin.NET&style=social"> |
| </a> |
| </li><li class="footer__item"> |
| <a href="https://github.com/casbin/casbin-cpp" target="_blank"> |
| <img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/casbin/casbin-cpp?label=Casbin-CPP&style=social"> |
| </a> |
| |
| <a href="https://github.com/casbin/casbin-rs" target="_blank"> |
| <img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/casbin/casbin-rs?label=Casbin-RS&style=social"> |
| </a> |
| </li><li class="footer__item"> |
| <a href="https://twitter.com/casbinHQ" target="_blank"> |
| <img alt="Twitter Follow" src="https://img.shields.io/twitter/follow/casbinHQ?style=social"> |
| </a> |
| </li><li class="footer__item"> |
| <script>var _hmt=_hmt||[];!function(){var e=document.createElement("script");e.src="https://hm.baidu.com/hm.js?2c0ffc6f8d49e98d964d59d7aa4cbf34";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)}()</script> |
| </li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a class="footerLogoLink_BH7S" href="/de/"><img src="/de/img/casbin_min.svg" alt="Kasbin-Logo" class="footer__logo themedComponent_mlkZ themedComponent--light_NVdE"><img src="/de/img/casbin_min.svg" alt="Kasbin-Logo" class="footer__logo themedComponent_mlkZ themedComponent--dark_xIcU"></a></div><div class="footer__copyright">Copyright © 2025 Casbin Organization</div></div></div></footer></div> |
| </body> |
| </html> |