:wrench: add eslint config file
Koa-Authz is an authorization middleware for Koa, it's based on https://github.com/casbin/node-casbin.
npm install koa-authz
const { Enforcer } = require('casbin') const Koa = require('koa') const app = new Koa() const authz = require('koa-authz') // response app.use((ctx, next) => { const start = new Date() await next() console.log(new Date() - start) }) // use authz middleware app.use(authz({ newEnforcer: async() => { // load the casbin model and policy from files, database is also supported. const enforcer = await Enforcer.newEnforcer("authz_model.conf", "authz_policy.csv") return enforcer } })) // reload routes const router = require('koa-router')({prefix: '/user'}) router.get('/', (ctx) => { ctx.body = {name: 'Chalin', age: 26} }) router.put('/', (ctx) => { ctx.body = {status: 'success'} }) app.use(router.routes(), router.allowedMethods()) app.listen(3000)
The authorization determines a request based on {subject, object, action}, which means what subject can perform what action on what object. In this plugin, the meanings are:
subject: the logged-on user nameobject: the URL path for the web resource like “dataset1/item1”action: HTTP method like GET, POST, PUT, DELETE, or the high-level actions you defined like “read-file”, “write-blog”For how to write authorization policy and other details, please refer to the Casbin's documentation.
This project is under MIT License. See the LICENSE file for the full license text.