yii2权限curd

2022-03-25 20:43:56 浏览数 (1)

代码语言: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());
		//你所登录的账号

0 人点赞