代码语言:javascript复制
'authManager' =>[
'class'=>yiirbacDbManager::className()
]
代码语言:javascript复制composer selfupdate
代码语言:javascript复制composer update yiisoft/yii2-composer --no-plugins
代码语言:javascript复制yii migrate --migrationPath=@yii/rbac/migrations
代码语言:javascript复制-- phpMyAdmin SQL Dump
-- version 4.5.1
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Generation Time: 2022-02-10 08:08:14
-- 服务器版本: 10.1.13-MariaDB
-- PHP Version: 5.6.21
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = " 00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `fff`
--
-- --------------------------------------------------------
--
-- 表的结构 `user`
--
CREATE TABLE `user` (
`id` int(11) NOT NULL,
`username` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`auth_key` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
`password_hash` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`password_reset_token` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`status` smallint(6) NOT NULL DEFAULT '10',
`created_at` int(11) NOT NULL,
`updated_at` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- 转存表中的数据 `user`
--
INSERT INTO `user` (`id`, `username`, `auth_key`, `password_hash`, `password_reset_token`, `email`, `status`, `created_at`, `updated_at`) VALUES
(1, 'cyg', '123456', '123456', NULL, '', 10, 0, 0);
--
-- Indexes for dumped tables
--
--
-- Indexes for table `user`
--
ALTER TABLE `user`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `username` (`username`),
ADD UNIQUE KEY `email` (`email`),
ADD UNIQUE KEY `password_reset_token` (`password_reset_token`);
--
-- 在导出的表使用AUTO_INCREMENT
--
--
-- 使用表AUTO_INCREMENT `user`
--
ALTER TABLE `user`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
第一步: 解析:
代码语言:javascript复制$authoBbj=Yii::$app->authManager;
//获取这个权限对象
$permission=$authoBbj->createPermission("创建");
//建立一个创建权限
$permission->description="这个权限的作用是创建";
//描述这个权限的作用
$authoBbj->add($permission);
//注册进权限表中
效果图:
第二步:
代码语言:javascript复制$authoBbj=Yii::$app->authManager;
//获取这个权限对象
$role=$authoBbj->createRole("总经理");
//创建一个总经理角色
$role->description="我是总经理角色";
//描述这个角色是什么
$authoBbj->add($role);
//注册进权限表中.
第三步:
代码语言:javascript复制$role=Yii::$app->authManager->getRole("总经理");
//获取角色
$permission=Yii::$app->authManager->getPermission("创建");
//获取权限
Yii::$app->authManager->addChild($role,$permission);
//把权限给角色
第四步:
代码语言:javascript复制$user=commonmodelsUser::findOne(['id'=>1]);
Yii::$app->user->login($user);
//代码登录
第五步:
代码语言:javascript复制$authoBbj=Yii::$app->authManager;
$role=$authoBbj->getRole("总经理");
$authoBbj->assign($role,Yii::$app->user->id);
//把总经理这个角色给user表里面的登录id
第六步: 判断user表里面的用户1是否具备总经理这个角色
代码语言:javascript复制$Role = Yii::$app->authManager->getRolesByUser(Yii::$app->user->getId());
var_dump($Role);
第七步: 判断用户表的用户1是否具备创建这个权限
代码语言:javascript复制var_dump(Yii::$app->user->can('创建'));
第八步: 获取角色拥有的权限
代码语言:javascript复制$auth=Yii::$app->authManager;
$permissions = $auth->getPermissionsByRole('总经理');
var_dump($permissions);
第九步: 获取用户被赋予的角色
代码语言:javascript复制$auth=Yii::$app->authManager;
$roles = $auth->getAssignments(Yii::$app->user->getId());
var_dump($roles);
第十步: 更新权限 角色
代码语言:javascript复制$authoBbj=Yii::$app->authManager;
$new_permission=$authoBbj->createPermission("我是更新权限");
$new_role=$authoBbj->createRole("经理");
$authoBbj->update("创建",$new_permission);
$authoBbj->update("总经理",$new_role);
第十一步: 删除权限 角色
代码语言:javascript复制$authoBbj=Yii::$app->authManager;
$permission=$authoBbj->createPermission("我是更新权限");
$authoBbj->remove($permission);
$role=$authoBbj->createRole("经理");
$authoBbj->remove($role);
第十一步: 删除角色下的所有权限
代码语言:javascript复制$authoBbj=Yii::$app->authManager;
$authoBbj->removeChildren("你所定义的角色");
第十二步: //收回用户拥有的所有角色
代码语言:javascript复制 $auth=Yii::$app->authManager;
$auth->revokeAll(Yii::$app->user->getId());
//你所登录的账号