注意:这是一个设计问题。如果stackoverflow不是此类问题的最佳位置,请告知我们。可能还有其他未知的元网站。
我使用asp.net web API开发了一个RESTful API,并使用mediatr作为我的主库来处理查询/命令。我的数据存储是MS SQL Server。
此API的主要目的是提供类似社交网络的网络应用:用户有 关注者 ,可能 喜欢和 评论 , 上传 和 下载 东西。他们还可以与 所有人 或 关注者 < 分享 / strong> only。
安全性显然是此应用程序的主要问题之一。如果用户具有使用复杂查询(连接,子查询等)检查的相应权限,则只能执行操作(如注释,下载等)。
我考虑过两个选项,目前正在使用第一个选项:
执行包含所有连接和检查的SQL查询。这为您提供单个DB往返的好处。但是,您的安全检查(规则)已嵌入到您的数据库中,我不太喜欢。
利用调解器pipeline of activities检查权限。这可能涉及大量的数据库查询(昂贵),但是,您的代码完全面向对象且易于理解,更重要的是易于测试!
我发现维护此代码非常困难,因为这些查询无处不在,我无法轻松测试它。任何建议都会非常有帮助。