多租户快递应用程序的授权层

时间:2018-04-27 14:11:44

标签: javascript node.js express architecture authorization

我有一个快速的API应用程序。

应用程序的结构如下: -

模特: -

  • Company.js
  • user.js的

控制器: -

  • companies.js
  • users.js
  • authentication.js

服务: -

  • passport.js
  • authorisation.js

路由器: -

  • companies.js
  • users.js

我的User模型有一个名为role的列,可以是以下['superadmin', 'admin', 'user']之一。

模型关联如下: -

  • Company有很多User
  • User属于Company

superadmin是一个可以跨公司进行更改的角色,而adminuser角色始终应该仅限于公司。

控制器具有基本操作,例如indexshowcreateupdatedelete

授权中间件可确保: -

  • 阻止具有user角色的用户访问该控制器的indexcreateupdatedelete操作。
  • 阻止具有admin角色的用户访问该控制器的index操作。
  • 角色为superadmin的用户根本没有被屏蔽。

我的应用程序中的一般请求流程如下: -

express router middleware -> passport js authentication -> path specific router -> user role authorisation -> controller action -> response to the user

由于采用了这种方法,我目前必须在控制器中检查用户role用户是admin还是superadmin index,{ {1}},createupdate行动。我不喜欢这种方法,因为我觉得控制器应该是精简的,只有模型操作逻辑,而不是处理多种情况的条件逻辑。

为了解决这个问题,我考虑将delete角色可访问功能分离为一个完全独立的控制器,并将管理员和用户角色可访问功能分组到另一个控制器中。

这是我应该采取的方式还是有其他方法为快递中的多租户应用程序设计授权?

感谢阅读,请指教。

0 个答案:

没有答案