【问题标题】:SQL Server 2008 EF 4 - limiting database records returned using permissions?SQL Server 2008 EF 4 - 限制使用权限返回的数据库记录?
【发布时间】:2011-07-03 15:43:33
【问题描述】:

在我们的数据库中,所有表都链接回一个表。这个表有一个位列来限制记录是否显示。目前在网站的代码端过滤记录。

有没有什么方法可以设置权限,让 userA 永远看不到数据库中公共位列设置为 true 的任何记录?

我们使用的是 SQL Server 2008。

如果您有任何想法如何在那里实现它,我们也在 .net 4(在 c# 中)中使用实体框架 4.0?

感谢您的反馈。

【问题讨论】:

    标签: c# sql-server-2008 .net-4.0 entity-framework-4 database-permissions


    【解决方案1】:

    根据this excellent TechNet article,如果您相应地构建数据库,使用视图或存储过程来限制当前用户的结果,SQL Server 确实可以实现行级安全性。据我所知,SQL Server 没有内置的行级锁定功能。

    【讨论】:

    • 感谢您的回复,我想答案是除了创建视图之外真的没有办法处理它。
    • @Chuck 当然没有内置机制。我个人会在应用程序中构建自己的权限处理。
    【解决方案2】:

    您可以在表格顶部定义一个视图,该视图仅显示那些“活动”列设置为 1 (true) 的行。

    然后,您可以撤销该组用户对基础表的SELECT 权限,但反过来授予他们在您创建的新视图上的SELECT

    【讨论】:

    • 我们考虑过这一点,但是我们必须保留 2 个完整的独立实体集(1 个使用视图,1 个使用表或不同的视图)所以我想我们将不得不探索更多的代码端选项。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    • 2011-02-20
    相关资源
    最近更新 更多