0

我有一个应用程序,它使用存储库的库来对数据库执行所有操作。这个库有很多方法,一些用户有权执行所有操作,而其他用户则没有。

我有一个客户端应用程序,如果它安装在局域网内的计算机上,该客户端直接使用存储库连接到数据库。这样,出于性能原因,客户端不必通过 WCF 主机。

如果应用程序安装在局域网外的计算机上,则它通过 WCF 服务连接,然后使用存储库连接到数据库。

我的问题是如何检查用户是否有权执行存储库方法

我正在考虑两种选择。一种是当我在存储库中创建一个对象时,它在我启动应用程序时创建,在我关闭应用程序时销毁。当我创建存储库时,我得到了所有用户的所有权限配置,所以我只对数据库执行一个查询。但是,如果应用程序很大或者我有很多用户,这会消耗大量内存,这并不好。

另一种选择是,对于存储库上的每个方法,传递两个额外的参数,用户和密码,所以每个方法做的第一件事就是向数据库查询权限。这会消耗更少的内存,但会对数据库进行更多查询。查询很简单,但是会消耗资源(连接)。

所以我想知道是否有更多选项来控制权限,或者我的第一个选项是否是一个好的解决方案。

4

1 回答 1

1

我的建议是密码或唯一访问密钥,这是第二选择,例如使用 GUID 或其他东西。您将需要单个持久性对象来服务多个请求。在每个连接上创建和销毁似乎没用。单个对象、多个连接、多个项目的多个键。跟踪对象的所有键。它是在资源方面的给予和接受。

于 2013-03-03T01:52:23.257 回答