检查权限的最佳位置在哪里?

Posted

技术标签:

【中文标题】检查权限的最佳位置在哪里?【英文标题】:Where is the best place to check permissions? 【发布时间】:2012-01-31 05:11:21 【问题描述】:

我的应用程序具有以下架构:

Web 服务层(wcf 服务)

业务逻辑层

数据访问层

我应该在哪里检查权限?在 Web 服务中还是在 BL 中?

【问题讨论】:

【参考方案1】:

作为另一个答案,我建议检查服务层中的访问权限,但这当然取决于您的需求。在许多情况下,我已经构建了服务,其中只有一些客户端允许访问该服务 - 当然 - WCF 使用来自调用者的证书或类似的证书对其进行检查。

然后,客户端的用户还有一组凭据,允许访问数据的特定部分(在 BLL 中检查)或服务的特定方法/端点,由 WCF 或 BLL 检查,具体取决于用户凭证和授权逻辑的性质。

但我同意 DAL 不应参与。

【讨论】:

【参考方案2】:

一般来说,我会在 Web 服务层做,因为安全性是一个高级别的问题。这对 WCF 特别有用,因为可以使用配置更改而不是代码来配置安全设置。因此,在 WCFlayer 上对安全性进行建模非常容易。 DAL 绝对不是检查安全性的地方,因为它的级别太低。给定的 Web 方法可能会调用许多 DAL 方法,而您可能会错过一个,或者 DAL 方法可以被允许或禁止,具体取决于调用它的 Web 方法。

【讨论】:

以上是关于检查权限的最佳位置在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5 检查权限

在 RESTful API 中检查用户权限的最佳实践

层设计:在哪里检查数据库读取/更新的权限?

检查用户位置的权限

在 iOS 14 上检查用户位置权限状态

位置权限检查和授权