如何在express / mongoose中创build访问控制

我有expressjs和Mongoose(有mongodb)的项目。 我有多个用户angular色 – pipe理员,经理,用户

我希望每个表的几个字段可以被pipe理员访问,而其他的则不可以。 默认情况下用户不会有任何编辑访问权限,pipe理员将具有完全访问权限。 一种方法是通过查看用户的angular色来在每个控制器function中进行这种控制。 有没有简单的方法来做,如检查用户是否有控制,然后为每个表保存一次,以避免业务逻辑的重复。

我的ordersschema如下。 我不希望没有pipe理员权限的客户信息。

var OrderSchema = new Schema({ order_type: { type: String, trim: true }, customer_phone: { type: String, trim: true } }); var managerAccess = [order_type]; 

我的用户模式如下(更多字段没有添加)

 var UserSchema = new Schema({ firstName: { type: String, trim: true, default: '', validate: [validateLocalStrategyProperty, 'Please fill in your first name'] }, roles: { type: [{ type: String, enum: ['user', 'admin'] }], default: ['user'] }, }) 

  • 将文件推入mongoose模型arrays中的子文件
  • 尝试使用mongoose和async保存到数据库时出现多个错误
  • 不同集合中的文档之间的Mongo DB关系
  • MongoDB / Mongoose $拉(删除)子文档不工作
  • 我如何映射使用复杂的子文档相互关联的对象
  • RangeError:超过mongoose的最大调用堆栈大小
  • 将sorting添加到mongoose查找查询
  • 如何以mongooserecursion的方式获取模型中的所有对象
  • 您可以将全局逻辑插入如下的function:

     app.all('*', requireAuthentication, loadUser); OR app.all('*', function(req, res, next){ }, function(req, res, next){ }); 

    无论你放在上面哪条路线,后续/下面的路线将在requireAuthentication &然后loadUsercallback后执行。

    另一个赌注是限制特定的路线,如下所示:

     app.all('/api/*', requireAuthentication); // all routes prefixed with **/api/** will require authentication. 

    这是express API文档的优秀参考 。