tp-auth
ThinkPHP5.1权限认证类
安装
composer require leruge/auth
全局配置
// 会自动在config配置目录创建auth.php配置文件,如果没有,请手动创建
// 配置参数如下
return [
'auth_on' => true, // 认证开关
'auth_type' => 1, // 认证方式,1为实时认证;2为登录认证。
'auth_group' => 'auth_group', // 用户组数据表名
'auth_group_access' => 'auth_group_access', // 用户-用户组关系表
'auth_rule' => 'auth_rule', // 权限规则表
'super_ids' => [], // 拥有所有权限的用户,如[1, 2, 3],那么这三个用户则拥有所有权限
];
导入数据库
wdl_为自定义表前缀
-- ----------------------------
-- Table structure for wdl_auth_group
-- ----------------------------
DROP TABLE IF EXISTS `tp_auth_group`;
CREATE TABLE `tp_auth_group` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '分组名称',
`rules` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '拥有的权限,使用逗号分隔',
`create_time` int(11) NOT NULL DEFAULT '0',
`update_time` int(11) NOT NULL DEFAULT '0',
`delete_time` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
-- ----------------------------
-- Table structure for wdl_auth_group_access
-- ----------------------------
DROP TABLE IF EXISTS `tp_auth_group_access`;
CREATE TABLE `tp_auth_group_access` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`uid` int(11) DEFAULT NULL COMMENT '用户ID',
`group_id` int(11) DEFAULT NULL COMMENT '分组ID',
`create_time` int(11) NOT NULL DEFAULT '0',
`update_time` int(11) NOT NULL DEFAULT '0',
`delete_time` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
-- ----------------------------
-- Table structure for wdl_auth_rule
-- ----------------------------
DROP TABLE IF EXISTS `tp_auth_rule`;
CREATE TABLE `tp_auth_rule` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`pid` int(11) DEFAULT '0' COMMENT '上级ID',
`name` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '权限规则',
`title` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '规则中文名',
`icon` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '菜单图标',
`sort` int(11) DEFAULT '9' COMMENT '排序',
`is_show` int(11) DEFAULT '1' COMMENT '1显示;0隐藏',
`create_time` int(11) NOT NULL DEFAULT '0',
`update_time` int(11) NOT NULL DEFAULT '0',
`delete_time` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
原理
auth类的原理网上介绍的比较多,这里就不在做过多的介绍了。对外提供了一个check、authList、userRuleIdList方法,用于校验权限。
使用方法
有俩种使用方法
使用权限类Auth
引入类库use leruge\auth\Auth;
获取auth实例,$auth = new Auth();
校验权限
if ($auth->check(模块/控制器/方法, 用户ID)){
//有操作权限
} else {
//没有操作权限
}
使用权限类门面Auth
引入类库use leruge\auth\AuthFacade;
校验权限
if (AuthFacade::check(模块/控制器/方法, 用户ID)){
//有操作权限
} else {
//没有操作权限
}
check方法参数
check($name, $uid, $relation)
$name 验证的权限,字符串是单条权限,多条权限使用数组
$uid 验证用户ID
$relation or满足一条则通过;and全部满足才能通过
authList方法
authList($uid)
返回权限列表,不区分上下级
userRuleIdList方法
userRuleIdList($uid)
返回权限ID数组