基于记录值的SQL权限(如果用户1列x = y列允许插入/更新等)



我需要将查询作为"用户"运行,该查询是表中的记录,并根据该用户的记录值获得了权限。

我有一个带有Tusers表的数据库,例如:

ID    Username       Email         Role
1      Pieman       mail.com       Admin
2     Cakedude     mail.co.uk   Receptionist
3      Muffin        gh.com        Other

我只需要拥有它的"用户"/记录" admin"的"角色"可以查看和编辑表,并且"接待员"查看它等等。

我知道并使用赠款作为权限,但不知道如何根据表记录作为用户运行查询,并且仅在用户的角色为" admin"

时才获得许可

所以如果我有:

USE DB1;
GRANT SELECT ON OBJECT::tUsers TO Admins;
GO 
SELECT * FROM tUsers

我如何将其作为用ID 1说的Tuser表示,如果用户的角色=" admin"

我敢肯定我已经看过这项工作了。

我很新,仍然学习正确的术语,因此,如果这是一个重复的问题,或者本质上只是描述了SQL功能。

我认为您无法在自己的用户表中授予或撤销权限。但是,您当然可以根据自己的用户表限制查询。

一种解决方案是在您的应用程序中执行此操作。在为他/她做任何事情之前,验证者的权限。

另一个解决方案是使用将用户ID作为参数的存储过程,并在中心位置为您进行检查。

第三个是对用户参数化视图,您可以在其中过滤一个用户无法访问的条目。

还有其他解决方案,但基本想法是您需要以某种方式检查权限,而是要求DBM服务器为您执行此操作。

最新更新