gpt4 book ai didi

sql - 基于组/用户的安全性。表/SQL问题

转载 作者:行者123 更新时间:2023-11-29 01:02:00 26 4
gpt4 key购买 nike

我正在设置一个基于组/用户的安全系统。

我有 4 个表如下:

  • 用户
  • 团体
  • group_user_mappings
  • 访问权限

其中 acl 是 item_id 与组或用户之间的映射。

我完成 acl 表的方式,我有 3 列注释(实际上是第 4 列作为自动 ID,但这是不相关的)

  • col 1 item_id(要访问的项目)
  • col 3 user_id(允许访问的用户)
  • col 3 group_id(允许访问的组)

比如

item1, 彼得,,

item2, , group1

item3,简,,

因此 acl 将授予用户或组的访问权限。 ACL 表中的任何一行都具有项目 -> 用户映射或项目组。

如果我想要一个返回用户有权访问的所有对象的查询,我想我需要一个带有 UNION 的 SQL 查询,因为我需要 2 个单独的查询,它们像这样连接..

项目 -> acl -> 组 -> 用户 AND项目 -> acl -> 用户

我想这可以正常工作。这是通常的做法吗?我这样做的方式正确吗?

看起来有点乱。我在想我可以通过为每个人创建一个用户组来解决这个问题,所以我只在我的 SQL 中处理组,但这似乎也有点困惑..

最佳答案

您本身不需要 2 个单独的查询:

select
* /* correct to columns needed */
from
users u
left join
group_user_mappings g
on
u.user_id = g.user_id
inner join
acl
on
(acl.user_id = u.user_id or
acl.group_id = g.group_id)
/* TODO - Add more tables, where clause, etc */

关于sql - 基于组/用户的安全性。表/SQL问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2506463/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com