gpt4 book ai didi

mysql - 用于用户管理的数据库表

转载 作者:行者123 更新时间:2023-11-29 12:17:03 27 4
gpt4 key购买 nike

我想从您那里得到一些有关用户角色管理最佳实践的建议。

我想创建一个用户注册并具有不同角色的应用程序。现在显而易见的是,创建用户表并在其中保存用户数据,如下所示:

用户

  • ID
  • 用户UUID
  • 用户名
  • 角色

但我考虑为不同的组提供单独的表格。就像这样:

管理员

  • ID
  • userUUID(-> 外键用户表)
  • 访问权限1
  • 访问权限2

订阅者

  • ID
  • userUUID(-> 外键用户表)
  • 等等

这有道理吗?那么,所有用户,无论其角色如何,都应该在一个数据库中吗?那么不同角色的具体信息又是什么呢?

谢谢!

最佳答案

如果你的角色很少改变,那可能会有效。但是,您应该始终计划更改,并且允许您添加角色而无需更改数据库架构的更灵活的选项如下所示:

用户:

  • uid
  • 用户信息...

角色:

  • 摆脱
  • 姓名

用户角色:

  • uid(FK 到用户表)
  • rid(外键到角色表)

在代码中,您可以检查 UserRoles 表以确定用户是否具有给定角色,因此应该允许其执行任何操作。

此外,如果您想混合和匹配多个角色的操作权限(即管理员和版主都有权删除帖子或其他内容)。您可以添加另一个级别,其中包含权限表和将其链接到角色表的连接表(RolePermissions)。然后,您的访问检查会变得稍微复杂一些,需要您连接 UserRoles 表和 RolePermissions 连接表来确定用户是否具有执行某些操作的给定权限。

类似这样的事情:

SELECT * 
FROM UserRoles u INNER JOIN RolePermissions p
ON u.rid=p.rid
WHERE u.ID=<USER> AND p.pid=<PERMISSION>

关于mysql - 用于用户管理的数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29637668/

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