【发布时间】:2018-12-10 08:16:24
【问题描述】:
我尝试创建 ACL(访问控制列表)但按用户 ID,而不是按角色 因为客户想要相同的级别,但有不同的权限
如何检查用户是否访问了在数据库中没有权限的方法或控制器
这里是表权限结构
+------------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+--------------+------+-----+---------+----------------+
| permission_id | int(11) | NO | PRI | NULL | auto_increment |
| permission_name | varchar(255) | NO | | NULL | |
| permission_desc | text | YES | | NULL | |
| permission_created_at | datetime | YES | | NULL | |
| permission_modified_at | datetime | YES | | NULL | |
+------------------------+--------------+------+-----+---------+----------------+
那么,permissions 表与 permission_role 表有关系 这是permission_role的结构
+--------------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+---------+------+-----+---------+----------------+
| permission_role_id | int(11) | NO | PRI | NULL | auto_increment |
| user_id | int(11) | NO | MUL | NULL | |
| permission_id | int(11) | NO | MUL | NULL | |
+--------------------+---------+------+-----+---------+----------------+
现在,如果用户访问用户无权访问它的控制器,我会感到困惑,我该如何检查它?如果通过路由或 URI 检查但我的数据库没有保存类控制器... 请问有什么解决办法吗?
谢谢你,对不起我的英语不好
【问题讨论】:
-
可以显示
permissions表的数据吗? -
@Yogendrasinh 这里是:postimg.cc/zbVkWn4M,这里是 权限角色数据:postimg.cc/bdqb2X2n
-
根据您的
permissions表列permission_name包含模块名称及其在括号中的方法。你的控制器名称怎么样。 Department(View) 的控制器名称和方法名称是什么? -
那么,我们通过 URI 检查权限?并在方法上一一调用?
-
您能告诉我们您数据库中
Department (view)的控制器名称和方法名称是什么吗?
标签: php mysql codeigniter acl