|
|
1
1
我们做了类似的事情,我们的解决方案是使用表值函数进行联接。 IE. 从事件E中选择*。 内部联接[dbo].fn_availableevents(@user_id)a on e.id=a.id 函数只返回允许用户查看的事件的事件ID。 |
|
|
2
1
我做了类似的事情,同时建立一个CMS… 实际上,我在数据库中创建了几个表: 用户 角色 用户角色 物体 对象权限 好的,它是这样工作的… 前三个是相当自我解释,用户,角色和他们之间的联系。 根据用户对角色的成员资格授予用户权限。 接下来我要做的就是定义我想要控制的“对象”和我想要分配给它们的权限级别… 因此,对象包含一个对象定义列表,然后在其他表中扩展,这些表与对象ID相关,而对象权限表基本上将对象链接到一个角色。 在这一点上,也许有必要解释一些关于角色的事情… 我看到的角色是一个权限列表,不多不少。 因此,如果我创建了一个名为guest的角色,并将该角色设置为允许读取权限,那么创建一个名为admin的角色,该角色具有全局权限,可以执行所有我能执行的操作,然后执行类似的操作… 添加用户1管理角色。 将对象1添加到管理角色。 用户1现在可以完全访问对象1,这里重要的是权限是继承的,所以任何子对象(包括文件和文件夹权限)也将处于同一角色集中,除非被递归重写。 因此,默认情况下,我将根级别对象分配给每个关键系统角色。 然后我有选择地将用户添加到树中不同点的不同角色中。 这有道理吗? 本质上,我可以选择任何对象和任何用户,并通过将用户添加到与对象相同的角色,向用户授予对该对象及其子对象的不同程度的权限。 现在有一些事情需要注意…… 如果我希望一个用户对一个嵌套很深的对象拥有管理权限,而不是在根级别,那么我必须创建一个新角色,授予所有权限,并将用户和对象都添加到该对象中。 原因是,如果我将用户添加到主管理角色中,那么将从根级别向上授予用户这些权限,而不是从嵌套对象授予这些权限。 除了这个,还有更多的内容,但本质上这就是文件系统权限的工作方式。 |
|
|
3
0
您没有提到正在使用的数据库(如果有),但是假设使用SQL Server,那么如果使用Windows身份验证进行连接,则可以创建基于 SYSTEM_USER 功能。 |
|
|
4
0
即使你不使用它,这是一种耻辱,你至少可以从中学习到这个概念的内在和外在 Rhino.Security . |