Egg-Authz is an authorization middleware for Egg, it's based on Node-Casbin: https://github.com/casbin/node-casbin.
npm install casbin@2 egg-authz@2 --savenpm install casbin@3 egg-authz@3 --save// app/middleware/authz.jsmodule.exports=require('egg-authz')// config/config.default.jsconstcasbin=require('casbin')module.exports={middleware: ['authz'],authz: {enable: true,newEnforcer: async()=>{// load the casbin model and policy from files, database is also supported.constenforcer=awaitcasbin.newEnforcer('authz_model.conf','authz_policy.csv')returnenforcer}}}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 licensed under the Apache 2.0 license.