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

yii2高级版本的权限控制RBAC

时间:2023-07-17



authManager' => [ 'class' => 'yiirbacDbManager', ],

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

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

整个源代码:

<?phpnamespace frontendcontrollers;use Yii;class IndexController extends yiiwebController{public function actionSite(){//创建总经理这个角色//创建权限//获取总经理这个角色+获取site/index这个权限//获取总经理这个角色,然后//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=commonmodelsUser::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'));

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

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