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 `wdl_auth_group`;
CREATE TABLE `wdl_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 `wdl_auth_group_access`;
CREATE TABLE `wdl_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 `wdl_auth_rule`;
CREATE TABLE `wdl_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(), которые используются для проверки прав доступа.
Использование Есть два способа использования:
if ($auth->check(модуль/контроллер/метод, идентификатор пользователя)){
//есть права на операцию
} else {
//нет прав на операцию
}
if (AuthFacade::check(модуль/контроллер/метод, идентификатор пользователя)){
//есть права на операцию
} else {
//нет прав на операцию
}
Метод check() Параметры метода check():
check($name, $uid, $relation)
$name — проверяемое право доступа, строка представляет собой одну строку прав доступа, несколько строк прав доступа используют массив
$uid — идентификатор проверяемого пользователя
$relation — или выполняется одно условие, и оно проходит; все условия должны быть выполнены, чтобы пройти
Метод authList()
authList($uid)
Возвращает список прав доступа, не различая уровни выше и ниже
Метод userRuleIdList()
userRuleIdList($uid)
Возвращает массив идентификаторов прав доступа
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )