2017-08-08 95 views
1

我正在使用ServiceStack开发大型API表面,并且正在解决授权问题。最终用户需要能够在API请求级别定制赋予各种角色的权限,即。其中请求角色可以调用的消息/ http动词。ServiceStack API中的细粒度授权

由于这个原因,我打算让角色脱离代码而不使用ServiceStack的RequiresRole属性。我计划将角色/权限关系存储在数据库中。

我也使用智威汤逊。由于API的大小,我很担心在ServiceStack的内置权限系统中使用RequiresPermission属性,因为我知道权限在JWT中填充,我不会过多膨胀头部。用户可能拥有数百甚至数千的权限。

我正在考虑

1)存储用户角色的权利要求,但在JWT不同意索赔。
2)创建一个自定义请求过滤器,根据它们在JWT中的角色检查用户是否具有所需的权限(来自缓存的数据库表)。

这听起来像是在ServiceStack中实现我的授权需求的合理方法吗?我可能会缺少什么缺点?有没有办法使用内置的ServiceStack授权工具来实现我的目标,而无需诉诸自定义请求过滤器或膨胀我的JWT太多?

回答

1

是的,这听起来像是一种合理的方法,如果您使用JWT,您应该注意用户具有的角色/权限数量,因为它影响每个请求的有效负载大小,因此诉诸使用应用程序级权限与ServiceStack的角色/权限断开连接是一种好方法。