express-permission-middleware

express permission middleware > * 安装 npm install express-permission-middleware -S

Usage no npm install needed!

<script type="module">
  import expressPermissionMiddleware from 'https://cdn.skypack.dev/express-permission-middleware';
</script>

README

express-permission

express permission middleware

  • 安装 npm install express-permission-middleware -S
  • 中间件启用
var express = require('express');
var app = express();
var p = require('express-permission-middleware');
app.use(p.init({
  reqMethodName: 'somePermission',
  forbidden: function(req, res, next) {
    res.status(403).send('global forbidden method')
  },
  getPermissions: function(req, res, cb) {
    console.log('dynamic get user permissions')
    // permissions cache in req
    if (req._permissions === undefined) {
      req._permissions = ['a','b']
    }
    cb(req._permissions)
  }
}))

1. 中间件初始化的参数

参数名称 描述
reqMethodName 自定义req中调用插件的名称,默认值(somePermission) 即在路由中可以调用req.somePermission
getPermissions 定义用户获取权限数组的方法
forbidden 定义权限不足是默认的返回
  • 中间件在路由中启用 主要的有两个方法参数都是一样的

1.p.verify中间件的函数

参数名称 说明
参数1 权限验证表达式 如'a','a && b', 'a || (b && c)'
参数2 传入权限不足时调用的方法,如果设置该参数,则不会调用设定的全局的权限不足处理函数

2.req.somePermission 请求的附加函数(其中somePermission可以通过reqMethodName自定义)

参数名称 说明
参数1 权限验证表达式 如'a','a && b', 'a || (b && c)'
参数2 验证结果处理回调函数 (result)
```js
var p = require('express-permission-middleware');
/* GET home page. */
router.get('/',
p.verify('a && (b && c)', (req, res, next) => {
console.log('forbidden in router ')
next()
}),
(req, res, next) => {
req.somePermission('a && (b && c)', (result) => {
console.log('using in req method result: ' + result)
if (result) {
res.render('index', { title: 'Express' });
} else {
next()
}
}
)},
p.verify('a && (b && c)'),
function(req, res, next) {
res.render('index', { title: 'Express' });
}
);
```