【发布时间】:2010-09-05 07:30:08
【问题描述】:
我经常遇到以下情况,我需要提供许多不同类型的权限。我主要使用带有 SQL Server 2000 的 ASP.NET / VB.NET。
场景
我想提供一个可以处理不同参数的动态权限系统。假设我想授予部门或特定人员访问应用程序的权限。并假设我们有许多应用程序在不断增长。
过去,我选择了以下两种我知道的方法之一。
-
使用具有特殊列的单个权限表,用于 确定如何应用参数。中的特殊列 这个例子是
TypeID和TypeAuxID。 SQL 看起来有点像 像这样。SELECT COUNT(PermissionID) FROM application_permissions WHERE (TypeID = 1 AND TypeAuxID = @UserID) OR (TypeID = 2 AND TypeAuxID = @DepartmentID) AND ApplicationID = 1 -
为每种类型的权限使用一个映射表,然后加入它们 一起来。
SELECT COUNT(perm.PermissionID) FROM application_permissions perm LEFT JOIN application_UserPermissions emp ON perm.ApplicationID = emp.ApplicationID LEFT JOIN application_DepartmentPermissions dept ON perm.ApplicationID = dept.ApplicationID WHERE q.SectionID=@SectionID AND (emp.UserID=@UserID OR dept.DeptID=@DeptID OR (emp.UserID IS NULL AND dept.DeptID IS NULL)) AND ApplicationID = 1 ORDER BY q.QID ASC
我的想法
我希望这些例子有意义。我把它们拼凑在一起。
第一个示例需要较少的工作,但它们都不是最佳答案。有没有更好的方法来处理这个问题?
【问题讨论】:
标签: sql permissions