Frontend Integration
Casbin.js brings Casbin-style access control to the frontend: define permissions (e.g. from your backend) and use them to show/hide UI or route users. It works in manual mode (you set permissions in code) or auto mode (fetch from an API).
インストール
npm install casbin.js
npm install casbin
または
yarn add casbin.js
Frontend Frameworks
| Framework | タイプ | 著者 | 説明 |
|---|---|---|---|
| react-authz | React | Casbin | Casbin.jsのためのReactラッパー |
| rbac-react | React | @daobeng | Role-Based Access Control in React using Higher-Order Components, CASL, and Casbin.js |
| vue-authz | Vue | Casbin | Casbin.jsのためのVueラッパー |
| angular-authz | Angular | Casbin | Casbin.jsのためのAngularラッパー |
クイックスタート
Configure Casbin.js in manual mode to set permissions explicitly in your frontend application:
const casbinjs = require("casbin.js");
// Set the user's permission:
// He/She can read `data1` and `data2` objects and can write `data1` object
const permission = {
"read": ["data1", "data2"],
"write": ["data1"]
}
// Run casbin.js in manual mode, which requires you to set the permission manually.
const authorizer = new casbinjs.Authorizer("manual");
With an authorizer instance, you can check permissions using authorizer.can() and authorizer.cannot(). Both methods return JavaScript Promises (see MDN documentation), so use the then() method to handle results:
result = authorizer.can("write", "data1");
result.then((success, failed) => {
if (success) {
console.log("you can write data1");
} else {
console.log("you cannot write data1");
}
});
// output: you can write data1
The cannot() method works identically:
result = authorizer.cannot("read", "data2");
result.then((success, failed) => {
if (success) {
console.log("you cannot read data2");
} else {
console.log("you can read data2");
}
});
// output: you can read data2
The success parameter indicates that the query completed without errors—not that permission was granted. Similarly, failed relates to query errors, not permission denial.
See our React example for practical Casbin.js usage.