ThinkPHP5.1权限认证类

本文介绍了ThinkPHP5.1框架中权限认证类的安装、配置和使用方法。通过composer安装leruge/auth库,配置认证开关、认证方式等参数,并创建相应的数据库表。权限类提供了check、authList、userRuleIdList等方法,用于权限校验和管理。使用时可以引入类库并调用这些方法进行权限控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值