egg-authz

3.0.0 • Public • Published

Egg-Authz

NPM version NPM download codebeat badge Build Status Coverage Status Gitter

Egg-Authz is an authorization middleware for Egg, it's based on Node-Casbin: https://github.com/casbin/node-casbin.

1. Installation

use casbin v2.x

npm install casbin@2 egg-authz@2 --save

use casbin v3.x

npm install casbin@3 egg-authz@3 --save

2. Create a file in middleware directory to import the module.

// app/middleware/authz.js
module.exports = require('egg-authz')
// config/config.default.js
const casbin = require('casbin')
module.exports = {
  middleware: [ 'authz' ],
  authz: {
    enable: true,
    newEnforcer: async() => {
      // load the casbin model and policy from files, database is also supported.
      const enforcer = await casbin.newEnforcer('authz_model.conf', 'authz_policy.csv')
      return enforcer
    }
  }
}

3. Enable the middleware in your config files.

How to control the access

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:

  1. subject: the logged-on user name
  2. object: the URL path for the web resource like "dataset1/item1"
  3. 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.

Getting Help

License

This project is licensed under the Apache 2.0 license.

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 3.0.0
    25
    • latest

Version History

  • Version
    Downloads (Last 7 Days)
    • Published
  • 3.0.0
    25
  • 2.0.0
    3
  • 1.0.2
    3
  • 1.0.1
    3
  • 1.0.0
    3

Package Sidebar

Install

npm i egg-authz

Weekly Downloads

11

Version

3.0.0

License

Apache-2.0

Unpacked Size

23.2 kB

Total Files

23

Last publish

Collaborators

  • hsluoyz
  • chalin