管理员面板基于角色的用户权限系统

Posted

技术标签:

【中文标题】管理员面板基于角色的用户权限系统【英文标题】:Role based user permission system for Admin Panel 【发布时间】:2013-06-22 15:23:16 【问题描述】:

大家好,我已经建立了一个管理面板,现在我必须根据哪个用户尝试访问它来保护它。我需要 phpmysql 中的某些内容,以便我可以检查我的代码中间是否用户(使用$_SESSION['thisUser'])有权修改或仅查看某些内容。我需要它很容易,因为我不擅长构建 php 类.. 不知道我可以称之为

if( $user->hasPermission('write-news') ) 
   // write news

有什么帮助吗?提前致谢!

【问题讨论】:

你有什么问题?在方法中从数据库中获取相关数据。 我不确定您所说的方法是什么意思,但我正在寻找一些东西(可能是几个类,不知道),它可以快速告诉我登录的用户是否具有特定权限做/不做某事。 【参考方案1】:

好的,我想我找到了一种更简单的方法来执行它。

我刚刚创建了几个表(用户、角色、权限和连接两者的角色权限)。然后我创建了一个 php 文件(包含在 db-settings.php 文件之后),它检索已登录用户的所有权限并将它们保存在一个数组中(从$_SESSION[] 获取 userId)和一个检查给定的function hasPermission($Permission) 数组中的权限并返回 true 或 false。这样,每次我需要检查特定权限时,我都会将其称为

if(hasPermission("write-news")) 
    // let him write it
 else 
    // "you do not have permission, bye bye"

也许这不是设置基于角色的权限系统的正确方法,或者确实如此,但它很简单,可以满足我的需要。不幸的是,我真的没有时间花时间学习更好的系统是如何工作的。如果您对此有一些建议,我很乐意阅读它。

【讨论】:

【参考方案2】:

好吧,如果您尝试使用面向对象的方法,那么当然可以,但是您需要确保您将拥有一个类文件,其中您的 hasPermission()$user 成员变量(很可能是用户class) 被定义为通过专门针对$user 的查询从数据库中获取值。

PS:如果您了解 PHP 框架方法,这将是有意义的。

【讨论】:

我不擅长 php 框架。我的管理面板是一些非常简单的 php 代码。这就是为什么我需要准备好使用的东西。我在网上搜索并找到了一个 ACL 类,但似乎需要一个用户类才能工作,而我没有。也许我需要用户和 acl 类之类的东西?

以上是关于管理员面板基于角色的用户权限系统的主要内容,如果未能解决你的问题,请参考以下文章

C 实现基于角色的权限系统

基于角色的访问控制 (RBAC)权限管理

进销存系统_系统权限管理-用户&角色管理

进销存系统_系统权限管理-用户&角色管理

PostgreSQL的用户,角色跟权限管理怎么解决

Jenkins配置基于角色的项目权限管理