我有一个快速的API应用程序。
应用程序的结构如下: -
模特: -
控制器: -
服务: -
路由器: -
我的User
模型有一个名为role
的列,可以是以下['superadmin', 'admin', 'user']
之一。
模型关联如下: -
Company
有很多User
User
属于Company
superadmin
是一个可以跨公司进行更改的角色,而admin
和user
角色始终应该仅限于公司。
控制器具有基本操作,例如index
,show
,create
,update
和delete
。
授权中间件可确保: -
user
角色的用户访问该控制器的index
,create
,update
和delete
操作。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}},create
,update
行动。我不喜欢这种方法,因为我觉得控制器应该是精简的,只有模型操作逻辑,而不是处理多种情况的条件逻辑。
为了解决这个问题,我考虑将delete
角色可访问功能分离为一个完全独立的控制器,并将管理员和用户角色可访问功能分组到另一个控制器中。
这是我应该采取的方式还是有其他方法为快递中的多租户应用程序设计授权?
感谢阅读,请指教。