前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >yii2权限curd

yii2权限curd

作者头像
贵哥的编程之路
发布2022-03-25 20:43:56
5880
发布2022-03-25 20:43:56
举报
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
'authManager' =>[
            'class'=>\yii\rbac\DbManager::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=\common\models\User::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());
		//你所登录的账号
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-02-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MariaDB
腾讯云数据库 MariaDB(TencentDB for MariaDB) 让您轻松在云端部署、使用 MariaDB 数据库。MariaDB 是在 MySQL 版权被 Oracle 收购后,由 MySQL 创始人 Monty 创立,其版权授予了“MariaDB基金会(非营利性组织)”以保证 MariaDB 永远开源,良好的开源策略,是企业级应用的最优选择,主流开源社区系统/软件的数据库系统,均已默认配置 MariaDB。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档