2013-03-02 52 views
0

我有一个应用程序使用存储库的库来执行数据库上的所有操作。这个库有很多方法,一些用户有权执行所有的操作,但其他的不是。实体框架,WCF和用户权限:如何实现它

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

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

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

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

另一个选择是,对于存储库上的每个方法,传递两个附加参数,即用户和密码,因此每个方法所做的第一件事是向数据库查询权限。这会消耗更少的内存,但会对数据库进行更多查询。该查询非常简单,但会占用资源(连接)。

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

+0

我编辑了你的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 – 2013-03-03 02:50:17

+0

谢谢,在我未来的问题中,我会遵循这个推荐。 – 2013-03-03 08:23:33

回答

1

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