欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

yii2权限curd

时间:2023-06-25

'authManager' =>[ 'class'=>yiirbacDbManager::className() ]

composer selfupdate

composer update yiisoft/yii2-composer --no-plugins

yii migrate --migrationPath=@yii/rbac/migrations

-- 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.21SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";SET time_zone = "+00:00";;;;;---- 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;;;;

第一步:
解析:

$authoBbj=Yii::$app->authManager;//获取这个权限对象$permission=$authoBbj->createPermission("创建");//建立一个创建权限$permission->description="这个权限的作用是创建";//描述这个权限的作用$authoBbj->add($permission);//注册进权限表中

效果图:
第二步:

$authoBbj=Yii::$app->authManager;//获取这个权限对象$role=$authoBbj->createRole("总经理");//创建一个总经理角色$role->description="我是总经理角色";//描述这个角色是什么$authoBbj->add($role);//注册进权限表中.


第三步:

$role=Yii::$app->authManager->getRole("总经理");//获取角色$permission=Yii::$app->authManager->getPermission("创建");//获取权限Yii::$app->authManager->addChild($role,$permission);//把权限给角色

第四步:

$user=commonmodelsUser::findOne(['id'=>1]);Yii::$app->user->login($user);//代码登录

第五步:

$authoBbj=Yii::$app->authManager;$role=$authoBbj->getRole("总经理");$authoBbj->assign($role,Yii::$app->user->id);//把总经理这个角色给user表里面的登录id

第六步:
判断user表里面的用户1是否具备总经理这个角色

$Role = Yii::$app->authManager->getRolesByUser(Yii::$app->user->getId());var_dump($Role);


第七步:
判断用户表的用户1是否具备创建这个权限

var_dump(Yii::$app->user->can('创建'));

第八步:
获取角色拥有的权限

$auth=Yii::$app->authManager;$permissions = $auth->getPermissionsByRole('总经理');var_dump($permissions);


第九步:
获取用户被赋予的角色

$auth=Yii::$app->authManager;$roles = $auth->getAssignments(Yii::$app->user->getId());var_dump($roles);

第十步:
更新权限 角色

$authoBbj=Yii::$app->authManager;$new_permission=$authoBbj->createPermission("我是更新权限");$new_role=$authoBbj->createRole("经理");$authoBbj->update("创建",$new_permission);$authoBbj->update("总经理",$new_role);

第十一步:
删除权限 角色

$authoBbj=Yii::$app->authManager;$permission=$authoBbj->createPermission("我是更新权限");$authoBbj->remove($permission);$role=$authoBbj->createRole("经理");$authoBbj->remove($role);


第十一步:
删除角色下的所有权限

$authoBbj=Yii::$app->authManager;$authoBbj->removeChildren("你所定义的角色");

第十二步:
//收回用户拥有的所有角色

$auth=Yii::$app->authManager;$auth->revokeAll(Yii::$app->user->getId());//你所登录的账号

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。