-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
index.html
55 lines (52 loc) · 25.1 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Casbin · An authorization library that supports access control models like ACL, RBAC, ABAC 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</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="An authorization library that supports access control models like ACL, RBAC, ABAC 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 name="docsearch:language" content="en"/><meta property="og:title" content="Casbin · An authorization library that supports access control models like ACL, RBAC, ABAC 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 property="og:type" content="website"/><meta property="og:url" content="https://v1.casbin.org/"/><meta property="og:description" content="An authorization library that supports access control models like ACL, RBAC, ABAC 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 property="og:image" content="https://v1.casbin.org/img/casbin.svg"/><meta name="twitter:card" content="summary"/><meta name="twitter:image" content="https://v1.casbin.org/img/casbin.svg"/><link rel="shortcut icon" href="/img/favicon.png"/><link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.css"/><link rel="stylesheet" href="https://cdn.casbin.org/casbin-website/css/monokai-sublime.min.css"/><link rel="alternate" type="application/atom+xml" href="https://v1.casbin.org/blog/atom.xml" title="Casbin Blog ATOM Feed"/><link rel="alternate" type="application/rss+xml" href="https://v1.casbin.org/blog/feed.xml" title="Casbin Blog RSS Feed"/><script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-119750650-1', 'auto');
ga('send', 'pageview');
</script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><link rel="stylesheet" href="/css/custom.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdn.casbin.org/casbin-website/js/clipboard.js"></script><script type="text/javascript" src="/js/code-blocks-buttons.js"></script><script type="text/javascript" src="/js/disqus.js"></script><script type="text/javascript" src="/js/baidu-analytics.js"></script><script type="text/javascript" src="/js/hotjar.js"></script><script type="text/javascript" src="/js/gitter.js"></script><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script><script type="text/javascript" src="/js/probe.js"></script><script type="text/javascript" src="/js/tawk.js"></script><script type="text/javascript" src="/js/banner.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/en"><img class="logo" src="/img/casbin.svg" alt="Casbin"/><h2 class="headerTitleWithLogo">Casbin</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class=""><a href="/docs/en/overview" target="_self">Docs</a></li><li class=""><a href="/docs/en/management-api" target="_self">API</a></li><li class=""><a href="/en/editor" target="_self">Editor</a></li><li class=""><a href="/docs/en/ide-plugins" target="_self">IDE Plugins</a></li><li class=""><a href="https://casdoor.org" target="_self">Single Sign-On (SSO)</a></li><li class=""><a href="https://forum.casbin.com" target="_self">Forum</a></li><li class=""><a href="/en/help" target="_self">Help</a></li><li class=""><a href="/blog/" target="_self">Blog</a></li><li class=""><a href="https://casdoor.com/#pricing" target="_self">Pricing</a></li><li class=""><a href="https://tawk.to/chat/62333c3ca34c2456412b88a7/1fuc26j6b" target="_self">Contact Sales</a></li><span><li><a id="languages-menu" href="#"><img class="languages-icon" src="/img/language.svg" alt="Languages icon"/>English</a><div id="languages-dropdown" class="hide"><ul id="languages-dropdown-items"><li><a href="/zh-CN">中文</a></li><li><a href="/ko">한국어</a></li><li><a href="/ru">Русский</a></li><li><a href="/fr">Français</a></li><li><a href="/de">Deutsch</a></li><li><a href="/ja">日本語</a></li><li><a href="https://crowdin.com/project/casbin" target="_blank" rel="noreferrer noopener">Help Translate</a></li></ul></div></li><script>
const languagesMenuItem = document.getElementById("languages-menu");
const languagesDropDown = document.getElementById("languages-dropdown");
languagesMenuItem.addEventListener("click", function(event) {
event.preventDefault();
if (languagesDropDown.className == "hide") {
languagesDropDown.className = "visible";
} else {
languagesDropDown.className = "hide";
}
});
</script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li><li class=""><a href="https://github.com/casbin" target="_self">GitHub</a></li></ul></nav></div></header></div></div><div class="navPusher"><div><div class="announcement"><div class="announcement-inner"><a style="color:white" href="https://casdoor.org" target="_blank">💖 Looking for an open-source identity and access management solution like Okta, Auth0, Keycloak ? Learn more about: Casdoor</a></div></div><div class="homeContainer"><div class="homeSplashFade"><div class="wrapper homeWrapper"><div class="inner"><h2 class="projectTitle">Casbin<small>An authorization library that supports access control models like ACL, RBAC, ABAC 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</small></h2><div class="placeholderads"></div><script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3509678918753247" crossorigin="anonymous"></script><div class="section promoSection"><div class="promoRow"><div class="pluginRowBlock"><div class="pluginWrapper buttonWrapper"><a class="button" href="/docs/en/overview" target="_self"><embed class="icon" height="20px" width="20px" align="left"/>Get Started</a></div><div class="pluginWrapper buttonWrapper"><a class="button" href="https://github.com/casbin/casbin" target="_self" icon="https://cdn.casbin.org/language/go-logo-1.svg"><embed class="icon" src="https://cdn.casbin.org/language/go-logo-1.svg" height="20px" width="20px" align="left"/>Golang</a></div><div class="pluginWrapper buttonWrapper"><a class="button" href="https://github.com/casbin/jcasbin" target="_self" icon="https://cdn.casbin.org/language/jee-3.svg"><embed class="icon" src="https://cdn.casbin.org/language/jee-3.svg" height="20px" width="20px" align="left"/>Java</a></div><div class="pluginWrapper buttonWrapper"><a class="button" href="https://github.com/casbin/casbin-cpp" target="_self" icon="https://cdn.casbin.org/language/c.svg"><embed class="icon" src="https://cdn.casbin.org/language/c.svg" height="20px" width="20px" align="left"/>C/C++</a></div><div class="pluginWrapper buttonWrapper"><a class="button" href="https://github.com/casbin/node-casbin" target="_self" icon="https://cdn.casbin.org/language/nodejs-1.svg"><embed class="icon" src="https://cdn.casbin.org/language/nodejs-1.svg" height="20px" width="20px" align="left"/>Node.js</a></div><div class="pluginWrapper buttonWrapper"><a class="button" href="https://github.com/casbin/casbin.js" target="_self" icon="https://cdn.casbin.org/language/logo-javascript.svg"><embed class="icon" src="https://cdn.casbin.org/language/logo-javascript.svg" height="20px" width="20px" align="left"/>Front-end js</a></div><div class="pluginWrapper buttonWrapper"><a class="button" href="https://github.com/php-casbin/php-casbin" target="_self" icon="https://cdn.casbin.org/language/PHP-logo.svg"><embed class="icon" src="https://cdn.casbin.org/language/PHP-logo.svg" height="20px" width="20px" align="left"/>PHP</a></div><div class="pluginWrapper buttonWrapper"><a class="button" href="https://github.com/php-casbin/laravel-authz" target="_self" icon="https://cdn.casbin.org/language/laravel-2.svg"><embed class="icon" src="https://cdn.casbin.org/language/laravel-2.svg" height="20px" width="20px" align="left"/>Laravel</a></div><div class="pluginWrapper buttonWrapper"><a class="button" href="https://github.com/casbin/pycasbin" target="_self" icon="https://cdn.casbin.org/language/python-5.svg"><embed class="icon" src="https://cdn.casbin.org/language/python-5.svg" height="20px" width="20px" align="left"/>Python</a></div><div class="pluginWrapper buttonWrapper"><a class="button" href="https://github.com/casbin/Casbin.NET" target="_self" icon="https://cdn.casbin.org/language/dotnet-logo.svg"><embed class="icon" src="https://cdn.casbin.org/language/dotnet-logo.svg" height="20px" width="20px" align="left"/>.NET (C#)</a></div><div class="pluginWrapper buttonWrapper"><a class="button" href="https://github.com/casbin4d/Casbin4D" target="_self" icon="https://cdn.casbin.org/language/delphi-2.svg"><embed class="icon" src="https://cdn.casbin.org/language/delphi-2.svg" height="20px" width="20px" align="left"/>Delphi</a></div><div class="pluginWrapper buttonWrapper"><a class="button" href="https://github.com/casbin/casbin-rs" target="_self" icon="https://cdn.casbin.org/language/rust.svg"><embed class="icon" src="https://cdn.casbin.org/language/rust.svg" height="20px" width="20px" align="left"/>Rust</a></div><div class="pluginWrapper buttonWrapper"><a class="button" href="https://github.com/CasbinRuby/casbin-ruby" target="_self" icon="https://cdn.casbin.org/language/ruby.svg"><embed class="icon" src="https://cdn.casbin.org/language/ruby.svg" height="20px" width="20px" align="left"/>Ruby</a></div><div class="pluginWrapper buttonWrapper"><a class="button" href="https://github.com/casbin/SwiftCasbin" target="_self" icon="https://cdn.casbin.org/language/swift-15.svg"><embed class="icon" src="https://cdn.casbin.org/language/swift-15.svg" height="20px" width="20px" align="left"/>Swift (Objective-C)</a></div><div class="pluginWrapper buttonWrapper"><a class="button" href="https://github.com/casbin/lua-casbin" target="_self" icon="https://cdn.casbin.org/language/lua-5.svg"><embed class="icon" src="https://cdn.casbin.org/language/lua-5.svg" height="20px" width="20px" align="left"/>Lua (OpenResty, Kong, APISIX)</a></div><div class="pluginWrapper buttonWrapper"><a class="button" href="https://github.com/casbin/dart-casbin" target="_self" icon="https://cdn.casbin.org/language/dart.svg"><embed class="icon" src="https://cdn.casbin.org/language/dart.svg" height="20px" width="20px" align="left"/>Dart (Flutter)</a></div><div class="pluginWrapper buttonWrapper"><a class="button" href="https://github.com/casbin/casbin-ex" target="_self" icon="https://cdn.casbin.org/language/elixir-lang-icon.svg"><embed class="icon" src="https://cdn.casbin.org/language/elixir-lang-icon.svg" height="20px" width="20px" align="left"/>Elixir</a></div><div class="pluginWrapper buttonWrapper"><a class="button" href="/docs/en/cloud-native" target="_self" icon="https://cdn.casbin.org/language/kubernets.svg"><embed class="icon" src="https://cdn.casbin.org/language/kubernets.svg" height="20px" width="20px" align="left"/>Cloud Native (Kubernetes, Istio, Envoy, KubeSphere)</a></div></div></div></div></div></div></div></div><div class="mainContainer"><div class="container paddingBottom paddingTop"><div class="wrapper"><div class="gridBlock"><div class="blockElement alignCenter fourByGridBlock imageAlignTop"><div class="blockImage"><img src="/img/model.png"/></div><div class="blockContent"><h2><div><span><p>Hybrid access control models</p>
</span></div></h2><div><span><p>In Casbin, an access control model is abstracted into a CONF file based on the PERM metamodel (Policy, Effect, Request, Matchers). So switching or upgrading the authorization mechanism for a project is just as simple as modifying a configuration.</p>
</span></div></div></div><div class="blockElement alignCenter fourByGridBlock imageAlignTop"><div class="blockImage"><img src="/img/storage.png"/></div><div class="blockContent"><h2><div><span><p>Flexible policy storage</p>
</span></div></h2><div><span><p>Besides memory and file, Casbin policy can be stored into lots of places. Currently, dozens of databases are supported, from MySQL, Postgres, Oracle to MongoDB, Redis, Cassandra, AWS S3. Check the full supported list at: <a href="https://v1.casbin.org/docs/en/adapters">https://v1.casbin.org/docs/en/adapters</a></p>
</span></div></div></div><div class="blockElement alignCenter fourByGridBlock imageAlignTop"><div class="blockImage"><img src="/img/language.png"/></div><div class="blockContent"><h2><div><span><p>Cross-languages & cross-platforms</p>
</span></div></h2><div><span><p>Casbin is implemented in Golang, Java, PHP and Node.js. All implementations share the same API and behaviors. You can learn Casbin once and use it everywhere.</p>
</span></div></div></div></div></div></div><div class="container lightBackground paddingBottom paddingTop"><div class="wrapper"><div class="gridBlock"><div class="blockElement alignCenter imageAlignSide imageAlignRight twoByGridBlock"><div class="blockContent"><h2><div><span><p>Policy persistence</p>
</span></div></h2><div><span><p>In Casbin, the policy storage is implemented as an adapter(aka middleware for Casbin). To keep light-weight, we don't put adapter code in the main library (except the default file adapter). A complete list of Casbin adapters is provided as below. Any 3rd-party contribution on a new adapter is welcomed, please inform us and I will put it in this list:) For details of adapters, please refer to the documentation: <a href="https://v1.casbin.org/docs/en/adapters">https://v1.casbin.org/docs/en/adapters</a></p>
</span></div></div><div class="blockImage"><img src="/img/store.png"/></div></div></div></div></div><div class="container paddingBottom paddingTop" id="try"><div class="wrapper"><div class="gridBlock"><div class="blockElement alignCenter imageAlignSide imageAlignLeft twoByGridBlock"><div class="blockImage"><img src="/img/scale.png"/></div><div class="blockContent"><h2><div><span><p>Policy enforcement at scale</p>
</span></div></h2><div><span><p>Some adapters support filtered policy management. This means that the policy loaded by Casbin is a subset of the policy in storage based on a given filter. This allows for efficient policy enforcement in large, multi-tenant environments when parsing the entire policy becomes a performance bottleneck.</p>
<p>To use filtered policies with a supported adapter, simply call the <code>LoadFilteredPolicy</code> method. The valid format for the filter parameter depends on the adapter used. To prevent accidental data loss, the <code>SavePolicy</code> method is disabled when a filtered policy is loaded.</p>
<p>For example, the following code snippet uses the built-in filtered file adapter and the RBAC model with domains. In this case, the filter limits the policy to a single domain. Any policy lines for domains other than <code>"domain1"</code> are omitted from the loaded policy:</p>
</span></div></div></div></div></div></div><div class="container lightBackground paddingBottom paddingTop"><div class="wrapper"><div class="gridBlock"><div class="blockElement alignCenter imageAlignSide imageAlignRight twoByGridBlock"><div class="blockContent"><h2><div><span><p>Role manager</p>
</span></div></h2><div><span><p>The role manager is used to manage the RBAC role hierarchy (user-role mapping) in Casbin. A role manager can retrieve the role data from Casbin policy rules or external sources such as LDAP, Okta, Auth0, Azure AD, etc. We support different implementations of a role manager. To keep light-weight, we don't put role manager code in the main library (except the default role manager). A complete list of Casbin role managers is provided as: <a href="https://v1.casbin.org/docs/en/role-managers">https://v1.casbin.org/docs/en/role-managers</a></p>
</span></div></div><div class="blockImage"><img src="/img/role.png"/></div></div></div></div></div><div class="productShowcaseSection paddingBottom"><h2>Who's using Casbin?</h2><p>Hundreds of projects are using Casbin, from established Fortune 500 companies to hot new startups. If you're curious to see what can be accomplished with Casbin, <a href="/users.html">check out these apps!</a></p><div class="logos"><a href="https://github.com/intel/rmd"><img src="/img/users/intel.png" alt="Intel RMD" title="Intel RMD"/></a><a href="https://github.com/goharbor/harbor"><img src="/img/users/vmware.png" alt="VMware Harbor" title="VMware Harbor"/></a><a href="https://docs.docker.com/engine/extend/legacy_plugins/#authorization-plugins"><img src="/img/users/docker.png" alt="Casbin Authorization Plugin" title="Casbin Authorization Plugin"/></a><a href="https://github.com/orange-cloudfoundry/gobis"><img src="/img/users/orange.png" alt="Orange Gobis" title="Orange Gobis"/></a><a href="https://www.linkedin.com/in/openmohan/"><img src="/img/users/cisco.svg" alt="Cisco Cloud" title="Cisco Cloud"/></a><a href="https://github.com/casbin/casbin/pull/56"><img src="/img/users/verizon.png" alt="Verizon" title="Verizon"/></a><a href="https://github.com/dragonflyoss/Dragonfly2/search?q=casbin&type=code"><img src="/img/users/alibaba.png" alt="Alibaba" title="Alibaba"/></a><a href="https://github.com/skydive-project/skydive"><img src="/img/users/redhat.png" alt="Red Hat" title="Red Hat"/></a><a href="https://github.com/tkestack/tke"><img src="/img/users/tencent.png" alt="Tencent" title="Tencent"/></a><a href="https://github.com/tmobile/jazz"><img src="/img/users/t-mobile.png" alt="T-Mobile" title="T-Mobile"/></a><a href="https://loopback.io/doc/en/lb4/migration-auth-access-control-example.html#using-casbin"><img src="/img/users/ibm.png" alt="IBM" title="IBM"/></a><a href="https://github.com/casbin/casbin/issues/299"><img src="/img/users/f5.png" alt="F5" title="F5"/></a><a href="https://github.com/casbin/casbin/issues/302"><img src="/img/users/bose.png" alt="Bose" title="Bose"/></a><a href="https://github.com/r-spacex/SpaceX-API/commit/f8daa8f9878dcd7a281fc8081e3aeb8e5d216089"><img src="/img/users/rspacex.png" alt="r/SpaceX" title="r/SpaceX"/></a><a href="https://www.elastic.co/guide/en/cloud-on-k8s/master/k8s-dependencies.html"><img src="/img/users/elastic.svg" alt="Elastic" title="Elastic"/></a><a href="https://www.linkedin.com/in/andrew-weng/"><img src="/img/users/360.jfif" alt="360" title="360"/></a><a href="https://www.linkedin.com/search/results/people/?keywords=casbin%20honeywell"><img src="/img/users/honeywell.png" alt="Honeywell" title="Honeywell"/></a><a href="https://www.linkedin.com/in/raghavbabu"><img src="/img/users/hpe.jpg" alt="HPE" title="HPE"/></a><a href="https://www.linkedin.com/in/peterjotoole"><img src="/img/users/se.png" alt="Schneider Electric" title="Schneider Electric"/></a><a href="https://www.linkedin.com/in/kshitij-rastogi19"><img src="/img/users/siemens.svg" alt="SIEMENS" title="SIEMENS"/></a><a href="https://docs.kubemq.io/license/open-source-software-notices"><img src="/img/users/kubemq.png" alt="KubeMQ" title="KubeMQ"/></a><a href="https://ovo.id"><img src="/img/users/ovo.png" alt="OVO" title="OVO"/></a><a href="https://www.musma.net/"><img src="/img/users/musma.svg" alt="Musma" title="Musma"/></a><a href="https://www.linkedin.com/in/nihalpandit"><img src="/img/users/ontario.jpg" alt="Ontario Government" title="Ontario Government"/></a><a href="https://jdlt.co.uk"><img src="/img/users/jdlt.svg" alt="JDLT" title="JDLT"/></a><a href="https://apachecon.com/acasia2021/sessions/1049.html"><img src="/img/users/pulsar.svg" alt="Apache Pulsar" title="Apache Pulsar"/></a></div><div class="more-users"><a class="button" href="/en/users">More Casbin Users</a></div></div><script src="https://opencollective.com/casbin/banner.js"></script></div></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/casbin.svg" alt="Casbin" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/en/get-started">Getting Started</a><a href="/docs/en/management-api">Management API</a><a href="/docs/en/rbac-api">RBAC API</a><a href="/docs/en/middlewares">Middlewares</a></div><div><h5>Community</h5><a href="/en/users">Who's using Casbin?</a><a href="https://stackoverflow.com/search?q=casbin" target="_blank" rel="noreferrer noopener">Stack Overflow</a></div><div><a class="github-button" href="https://github.com/casbin/casbin" data-icon="octicon-star" data-count-href="/stargazers" data-show-count="true" data-count-aria-label="# stargazers on GitHub" aria-label="Star this project on GitHub">Casbin</a> <a class="github-button" href="https://github.com/casbin/jcasbin" data-icon="octicon-star" data-count-href="/stargazers" data-show-count="true" data-count-aria-label="# stargazers on GitHub" aria-label="Star this project on GitHub">jCasbin</a><br/><a class="github-button" href="https://github.com/casbin/node-casbin" data-icon="octicon-star" data-count-href="/stargazers" data-show-count="true" data-count-aria-label="# stargazers on GitHub" aria-label="Star this project on GitHub">Node-Casbin</a> <a class="github-button" href="https://github.com/php-casbin/php-casbin" data-icon="octicon-star" data-count-href="/stargazers" data-show-count="true" data-count-aria-label="# stargazers on GitHub" aria-label="Star this project on GitHub">PHP-Casbin</a><a class="github-button" href="https://github.com/casbin/pycasbin" data-icon="octicon-star" data-count-href="/stargazers" data-show-count="true" data-count-aria-label="# stargazers on GitHub" aria-label="Star this project on GitHub">PyCasbin</a> <a class="github-button" href="https://github.com/casbin/Casbin.NET" data-icon="octicon-star" data-count-href="/stargazers" data-show-count="true" data-count-aria-label="# stargazers on GitHub" aria-label="Star this project on GitHub">Casbin.NET</a><a class="github-button" href="https://github.com/casbin/casbin-cpp" data-icon="octicon-star" data-count-href="/stargazers" data-show-count="true" data-count-aria-label="# stargazers on GitHub" aria-label="Star this project on GitHub">Casbin-CPP</a> <a class="github-button" href="https://github.com/casbin/casbin-rs" data-icon="octicon-star" data-count-href="/stargazers" data-show-count="true" data-count-aria-label="# stargazers on GitHub" aria-label="Star this project on GitHub">Casbin-RS</a><div class="social"><a href="https://twitter.com/casbinHQ" class="twitter-follow-button">Follow @casbinHQ</a></div><div class="social"><div class="fb-like" data-href="https://v1.casbin.org" data-colorscheme="dark" data-layout="standard" data-share="true" data-width="225" data-show-faces="false"></div></div></div></section><section class="copyright">Copyright © 2022 Casbin Organization</section></footer></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script><script>window.fbAsyncInit = function() {FB.init({appId:'1354585054683583',xfbml:true,version:'v2.7'});};(function(d, s, id){var js, fjs = d.getElementsByTagName(s)[0];if (d.getElementById(id)) {return;}js = d.createElement(s); js.id = id;js.src = '//connect.facebook.net/en_US/sdk.js';fjs.parentNode.insertBefore(js, fjs);}(document, 'script','facebook-jssdk'));
</script><script>window.twttr=(function(d,s, id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src='https://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js, fjs);t._e = [];t.ready = function(f) {t._e.push(f);};return t;}(document, 'script', 'twitter-wjs'));</script><script>
document.addEventListener('keyup', function(e) {
if (e.target !== document.body) {
return;
}
// keyCode for '/' (slash)
if (e.keyCode === 191) {
const search = document.getElementById('search_input_react');
search && search.focus();
}
});
</script><script>
var search = docsearch({
apiKey: '2b87bf88e794912bdbe1b08420681efa',
indexName: 'casbin',
inputSelector: '#search_input_react',
algoliaOptions: {"facetFilters":["language:en"]}
});
</script></body></html>