SQL Server存储过程权限检查
我的Asp.NETMVC网站使用基于存储过程的数据访问SQL Server数据库。如果当前用户可以执行此操作,则几乎每个过程都应该检查权限。我通过向每个过程传递附加参数SQL Server存储过程权限检查,sql,sql-server-2008,stored-procedures,permissions,Sql,Sql Server 2008,Stored Procedures,Permissions,我的Asp.NETMVC网站使用基于存储过程的数据访问SQL Server数据库。如果当前用户可以执行此操作,则几乎每个过程都应该检查权限。我通过向每个过程传递附加参数UserId,并检查用户在特殊表中是否有特殊权限代码来解决这个问题 它会导致许多复制粘贴的脚本。我想知道,还有别的办法吗?或者您可能有改进我的解决方案的建议…只是一个想法,但是如果您封装逻辑以在用户定义的函数中查找给定用户和项目的权限,会怎么样。然后,从必要的存储过程调用函数并检查返回值。您仍然会进行一些复制和粘贴,但从理论上讲,
UserId
,并检查用户在特殊表中是否有特殊权限代码来解决这个问题
它会导致许多复制粘贴的脚本。我想知道,还有别的办法吗?或者您可能有改进我的解决方案的建议…只是一个想法,但是如果您封装逻辑以在用户定义的函数中查找给定用户和项目的权限,会怎么样。然后,从必要的存储过程调用函数并检查返回值。您仍然会进行一些复制和粘贴,但从理论上讲,这将导致更干净的方法。只是一个想法,但是如果您封装逻辑,在用户定义的函数中查找给定用户和项目的权限,会怎么样呢。然后,从必要的存储过程调用函数并检查返回值。您仍然会进行一些复制和粘贴,但从理论上讲,这应该会导致更干净的方法。好的,我已经编写了一个函数,返回位并立即检查它:如果(dbo.checkPermissions(@UserId,31)==1),那么。。。我可以重新设计函数,使其能够在没有“==1”的情况下使用吗?我不这么认为,因为位数据类型可以是三个值之一:0、1或null。好的,我已经编写了一个函数,返回位并立即检查它:如果(dbo.checkPermissions(@UserId,31)==1),那么。。。我是否可以重新设计函数,使其能够在没有“==1”的情况下使用?我不这么认为,因为位数据类型可以是三个值之一:0、1或null。