xiidea / ezrbac
为 Codeigniter 框架提供的简单易用的基于角色的访问控制库
Requires
- php: >=5.3.0
- composer/installers: *
This package is not auto-updated.
Last update: 2024-09-17 10:56:54 UTC
README
为流行的 PHP 框架 Codeigniter 提供简单易用的基于角色的访问控制库
关键特性
- 易于集成到 Codeigniter 应用程序中
- 集成了密码恢复功能的用户登录系统
- 易于定制!!!
- 集成了访问控制管理界面
- 可配置数据库表名
- 支持干净的 URL 路由!
- 只需编辑配置文件即可轻松适应现有模式!!
- 与您现有的登录系统兼容!
- API 用于与库交互
- 用户元数据表包含用户的个人资料数据(如:姓名、地址等)
- 覆盖邮件函数以使用您自己的函数发送恢复邮件
- 配置和视图文件可以被覆盖!
- 更多功能即将推出....!!!
当前稳定版本
如何安装
安装此库简单,只需4个步骤
-
将 ezRbac 放置在您的应用程序的 third_party 目录中(或使用 composer 命令)
-
在 schema 目录中运行 SQL 或手动在数据库中创建三个表。
-
在 ./application/config/config.php 中设置
$config['enable_hooks'] = TRUE;
-
在 ./application/config/config.php 中设置
$config['encryption_key'] = SOME_SECRET_KEY;
-
在 ./application/config/hooks.php 中添加钩子
$hook['post_controller_constructor'] = array( 'class' => 'EzRbacHook', 'function' => 'accessCheck', 'filename' => 'EzRbacHook.php', 'filepath' => 'third_party/ezRbac' );
将自定义操作映射到访问映射
在控制器中定义一个名为 access_map 的公共函数,如下所示
public function access_map(){ return array( 'index'=>'view', 'update'=>'edit' ); }
数组的索引是实际的动作名称,映射到配置为 $config['default_access_map'] = array("view", "create", "edit", "delete", "publish")
的访问权限
##默认凭证
如果您已导入提供的 data.sql,则默认凭证是
user: admin@admin.com
password: 123456
ezRbac 特定 URL
注销 URL: /index.php/welcome/index/rbac/logout
acl 管理URL: /index.php/welcome/index/rbac/gui
如果您已启用路由(请参阅 如何启用路由),则可以访问所有 URL,如 /rbac/(logout|gui)
如何启用路由
启用路由很简单,只需两步
-
在 ./ezRbac/config/ez_rbac.php 中设置
$config['use_routing'] = true;
-
在 /application/config/routes.php 中设置
$route['^(rbac)/(.+)$'] = $route['default_controller']."/index/$1/$2";
(其中 rbac 可以通过设置$config['ezrbac_url'] = 'rbac';
替换为您想要的任何内容)
定制
大部分定制都可以通过设置配置值来完成。您可以通过两种方式定制配置
- (简单方法)在 ./third_party/ezRbac/config/ez_rbac.php 中修改配置以匹配您的选择
- (高级方法)将 ./third_party/ezRbac/config/ez_rbac.php 的副本作为 ./application/config/ez_rbac.php 创建,或创建新文件以覆盖默认设置。这种方式,每次您更新库时,都不需要担心您的配置值。
您还可以覆盖视图文件。只需将视图文件复制到 /application/views/ezrbac/,并根据需要修改。目前只有 login 目录中的视图可扩展。
配置选项
-
public_controller
类型: 数组
默认: 数组()
不受我们库检查访问的公共控制器列表 -
ajax_no_permission_msg
类型:字符串
默认值:您没有权限执行此操作!在执行ajax请求而不是查看完整的受限制页面时返回的消息,因此您可以自行处理这种情况。 -
default_access
类型:布尔型
默认值:FALSE
未知方法的默认访问权限,如果拒绝访问则为TRUE。 -
default_access_map
类型: 数组
默认值:array("view", "create", "edit", "delete", "publish")
系统使用的访问映射数组。您可以根据需要命名,并且可以添加/删除访问名称。 -
autologin_cookie_life
类型:整数
默认值:2592000(30天)
记住我选中时记住用户登录会话的时间(秒)。 -
autologin_cookie_name
类型:字符串
默认值:ezrbac_remember_me
用于存储选中记住我选项的用户数据的自动登录cookie名称。 -
redirect_url
类型:字符串
默认值:""
如果拒绝访问资源URL,则重定向URL(应为公共控制器)。如果不清楚,请留空。 -
login_url
类型:字符串
默认值:""
如果您要处理登录,则在此设置您的登录URL(应为公共控制器),留空以让我处理它!在处理登录时,使用$this->ezrbac->getCurrentUser($user)
来注册用户会话。 -
login_session_key
类型:字符串
默认值:access_role
登录检查会话键名称,用于检查用户是否已登录。在不修改核心库的情况下,您可以使用以下任何一个:user_id/user_email/access_role -
password_min_length
类型:整数
默认值:6
密码验证规则检查最小长度。 -
password_recovery_email
类型:字符串
默认值:noreply@yourdomain.com
密码恢复邮件的发件人邮箱 -
password_recovery_email_name
类型:字符串
默认值:EzRbac
密码恢复邮件的发件人名称 -
password_recovery_subject
类型:字符串
默认值:密码重置请求
密码恢复邮件的主题 -
auto_login_table
类型:字符串
默认值:user_autologin
用于存储自动登录数据的数据库表名称 -
user_table
类型:字符串
默认值:system_users
用于存储用户数据的数据库表名称 -
user_meta_table
类型:字符串
默认值:user_meta
用于存储用户元数据的数据库表名称 -
user_role_table
类型:字符串
默认值:user_role
用于存储用户角色信息的数据库表名称 -
access_map_table
类型:字符串
默认值:user_access_map
根据用户角色存储访问控制列表的数据库表名称 -
schema_user_table
类型: 数组
默认值
array( 'id' => 'id', 'email' => 'email', 'password' => 'password', 'salt' => 'salt', 'user_role_id' => 'user_role_id', 'last_login' => 'last_login', 'last_login_ip' => 'last_login_ip', 'reset_request_code' => 'reset_request_code', 'reset_request_time' => 'reset_request_time', 'reset_request_ip' => 'reset_request_ip', 'verification_status' => 'verification_status', 'status' => 'status' );
您的现有系统的数据库字段映射。有助于在不修改代码的情况下适应数据库!
- schema_user_role
类型:数组默认
array( 'id' => 'id', 'role_name' => 'role_name' );
您的现有系统的数据库字段映射。有助于在不修改代码的情况下适应数据库!
-
user_meta_user_id
类型:字符串
默认值:user_id
用户元表中的外键名称 -
show_password_reset_mail
类型:布尔型
默认值:FALSE
启用在浏览器中显示电子邮件而不是发送它。用于调试目的。在生产环境中不要设置true -
override_email_function
类型:字符串|false
默认值:FALSE
您可以使用自己的函数发送电子邮件。如果将此值设置为 'name_of_your_function',则调用name_of_your_function($option)
来发送电子邮件,其中$option = array('subject'=>'','from'=>'', 'from_name'=>'', 'to'=>'','body'=>'');
-
enable_ezrbac_gui
类型:布尔型
默认值:TRUE
启用或禁用管理界面 -
ezrbac_gui_url
类型:字符串
默认值:gui
ezrbac gui接口访问的URL标识符 -
ezrbac_password
类型:字符串
默认值:hardtoremember
访问ACL管理界面的密码 -
ezrbac_url
类型:字符串
默认:rbac
Ezrbac特定的URL标识符。 -
use_assets_within_package
类型:布尔型
默认:TRUE
此配置值告诉库它应从哪里使用资源。如果设置为true,库中视图使用的js/css/images将从包的资产目录中提供服务(对快速设置很有帮助)。对于高级用户,最好将资产目录的内容复制到Web可访问的位置,并设置$config['assets_base_directory']='从根目录到资产目录的相对路径'
-
assets_base_directory
类型:字符串
默认:rbac
仅在设置$config['use_assets_within_package']=false;
时使用。然后设置从根目录到资产目录的相对路径 -
use_routing
类型:布尔型
默认值:FALSE
通过添加路由规则启用管理界面的干净URL。如果$config['ezrbac_url']='rbac'
,则可以添加$route['^(rbac)/(.+)$'] = $route['default_controller']."/index/$1/$2";
并将其设置为true。
依赖关系
要使用此库,您需要Codeigniter 3.0+ 对于旧版本,请使用2.x分支