您当前的位置: 首页 >  认证

暂无认证

  • 0浏览

    0关注

    92582博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

yii2 高级版本的权限控制RBAC(认证与授权的使用)修改篇

发布时间:2022-02-08 11:57:08 ,浏览量:0

common/main.php的components下 在这里插入图片描述

'authManager' => [ 'class' => 'yii\rbac\DbManager', 'itemTable' => 'auth_item', 'assignmentTable' => 'auth_assignment', 'itemChildTable' => 'auth_item_child', ], 
yii migrate --migrationPath=@yii/rbac/migrations/ 

生成这样 在这里插入图片描述

user表:

-- phpMyAdmin SQL Dump -- version 4.5.1 -- http://www.phpmyadmin.net -- -- Host: 127.0.0.1 -- Generation Time: 2022-01-28 03:49:51 -- 服务器版本: 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: `smister` -- -- -------------------------------------------------------- -- -- 表的结构 `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', '', '$2y$13$NHFd.3BWFT5hSiq3uH1Ph.tB7LclapDx.dDRexGgk7eb5zynMkgPe', 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 */; 

切记:一个注释一个注释的试.

整个源代码:

 public function actionSite() { //创建总经理这个角色 /*$role=Yii::$app->authManager->createRole("总经理");
		Yii::$app->authManager->add($role);
		var_dump($role);*/ //创建权限 /*$permission=Yii::$app->authManager->createPermission('index/index');
			//注册进权限中
		Yii::$app->authManager->add($permission);*/ //获取总经理这个角色+获取site/index这个权限 /*$role=Yii::$app->authManager->getRole("总经理");
		$permission=Yii::$app->authManager->getPermission("index/index");
		//把index/index这个链接的权限赋值给总经理这个角色
		Yii::$app->authManager->addChild($role,$permission);*/ //获取总经理这个角色,然后 /*$role = Yii::$app->authManager->getRole("总经理");
		Yii::$app->authManager->assign($role,1);
		*/ /*$user=\common\models\User::findOne(['id'=>1]);
Yii::$app->user->login($user);*/ //var_dump(Yii::$app->user->id); //var_dump(Yii::$app->user->can('index/index')); }} 

第一步: //创建总经理这个角色,并且注册进权限表中

$role=Yii::$app->authManager->createRole("总经理"); Yii::$app->authManager->add($role); var_dump($role); 

在这里插入图片描述第二步: //创建权限

$permission=Yii::$app->authManager->createPermission('index/index'); 

//注册进权限中

Yii::$app->authManager->add($permission); 

在这里插入图片描述 第三步: 获取总经理角色 获取index/index权限 把权限赋值给角色

$role=Yii::$app->authManager->getRole("总经理"); $permission=Yii::$app->authManager->getPermission("index/index"); Yii::$app->authManager->addChild($role,$permission); 

在这里插入图片描述 第四步: 获取总经理角色。赋值给同一个数据库里面的user表里面的id字段.意思是这个user表的id字段拥有这个权限,id为1的字段相当于用户!

$role = Yii::$app->authManager->getRole("总经理"); Yii::$app->authManager->assign($role,1); 

第五步: 实现登录效果

$user=\common\models\User::findOne(['id'=>1]); Yii::$app->user->login($user); 

第六步: 判断是否已经登录了

var_dump(Yii::$app->user->id); 

第七步: 判断user表里面的id是否具备index/index这个权限

var_dump(Yii::$app->user->can('index/index')); 

在这里插入图片描述

关注
打赏
1653961664
查看更多评论
立即登录/注册

微信扫码登录

0.3521s