Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架、WCF和用户权限:如何实现_C#_Entity Framework 4_Permissions - Fatal编程技术网

C# 实体框架、WCF和用户权限:如何实现

C# 实体框架、WCF和用户权限:如何实现,c#,entity-framework-4,permissions,C#,Entity Framework 4,Permissions,我有一个应用程序,它使用库作为存储库来执行数据库上的所有操作。这个库有许多方法,一些用户有权执行所有操作,但其他用户没有 我有一个客户端应用程序,如果它安装在局域网内的计算机上,该客户端直接使用存储库连接到数据库。这样,出于性能原因,客户端不必通过WCF主机 如果应用程序安装在LAN之外的计算机上,则它通过WCF服务连接,然后使用存储库连接到数据库 我的问题是如何检查用户是否具有执行存储库方法的权限 我在考虑两种选择。一种是在存储库中创建对象时,它在启动应用程序时创建,在关闭应用程序时销毁。当我

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

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

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

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

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

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


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

我的建议是密码或唯一的访问密钥,这是第二个选择,就像使用GUID或其他东西一样。您需要一个持久性对象来服务多个请求。在每个连接上创建和销毁似乎都是无用的。单个对象、多个连接、多个项目的多个键。跟踪对象的所有关键点。这是资源的交换。

我已经编辑了你的标题。请看“”,其中的共识是“不,他们不应该”。谢谢,在我今后的问题中,我将遵循这一建议。