我有一个应用程序,它使用存储库的库来对数据库执行所有操作。这个库有很多方法,一些用户有权执行所有操作,而其他用户则没有。
我有一个客户端应用程序,如果它安装在局域网内的计算机上,该客户端直接使用存储库连接到数据库。这样,出于性能原因,客户端不必通过 WCF 主机。
如果应用程序安装在局域网外的计算机上,则它通过 WCF 服务连接,然后使用存储库连接到数据库。
我的问题是如何检查用户是否有权执行存储库方法。
我正在考虑两种选择。一种是当我在存储库中创建一个对象时,它在我启动应用程序时创建,在我关闭应用程序时销毁。当我创建存储库时,我得到了所有用户的所有权限配置,所以我只对数据库执行一个查询。但是,如果应用程序很大或者我有很多用户,这会消耗大量内存,这并不好。
另一种选择是,对于存储库上的每个方法,传递两个额外的参数,用户和密码,所以每个方法做的第一件事就是向数据库查询权限。这会消耗更少的内存,但会对数据库进行更多查询。查询很简单,但是会消耗资源(连接)。
所以我想知道是否有更多选项来控制权限,或者我的第一个选项是否是一个好的解决方案。