我现在正在尝试在Yii框架下开发一个网站,程序中需要基于角色的访问控制(RBAC)。我从指南中看到过滤器可以用于RBAC,但我想知道如果管理员和用户存储在两个表中该怎么办?即如果数据库中有两张表,一张为管理员,一张为用户,我应该如何实现访问控制?谢谢你。

最佳答案

我认为这是不可能的。当您检查 authassignment 的 db schema 时,您会看到它有一个 userid 字段,该字段与您的 users 表相关。如果您有两个不同的表,则需要在 auth 表中使用另一个唯一标识符。您是否绝对有必要为您的用户提供两个不同的表?实际上,RBAC 对于分离关注点非常有用。所以你有一个用户表,但你可以为你的用户分配不同的角色,比如“管理员”、“编辑”等。如果你有两个不同的用户表,如果用户成为管理员你会怎么做?这是您不应该处理的复杂性。如果您绝对必须这样做,您将不得不扩展 RBAC 功能,以便可以引用 tp 不同的表。

关于php - 涉及多个表时如何进行基于Yii角色的访问控制,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10561203/

10-12 03:41