/express-permission

express permission middleware

Primary LanguageJavaScript

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)
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' });
  }
);