YII RBAC [ 未指定版本 ]
YII2 advanced 基于 RBAC 的权限管理
一、首先要在 common/config/main.php 中加入如下配置
'authManager' => [
'class' => 'yii\rbac\DbManager',
'itemTable' => 'auth_item',
'assignmentTable' => 'auth_assignment',
'itemChildTable' => 'auth_item_child',
],
二、在 vendor/yiisoft/yii2/rbac/migrations 中找到 …rbac_init.php,并将数据库迁移文件放入 console/migrations 中
三、执行 php yii migrate 生成数据库,生成四个表
yii\rbac\DbManager::$itemTable: 该表存放授权条目(译者注:即角色和权限)。默认表名为 "auth_item" 。
yii\rbac\DbManager::$itemChildTable: 该表存放授权条目的层次关系。默认表名为 "auth_item_child"。
yii\rbac\DbManager::$assignmentTable: 该表存放授权条目对用户的指派情况。默认表名为 "auth_assignment"。
yii\rbac\DbManager::$ruleTable: 该表存放规则。默认表名为 "auth_rule"。
四、权限分配思路
1、建立权限节点
2、建立角色
3、给角色分配权限
4、为用户选择角色
5、验证用户权限
相关链接
specialnot
注册时间:2015-08-06
最后登录:2019-08-16
在线时长:27小时54分
最后登录:2019-08-16
在线时长:27小时54分
- 粉丝43
- 金钱1175
- 威望200
- 积分3445
共 3 条评论
我在main.php里面添加了这个配置后,执行./yii migrate/up报错
Exception 'yii\base\InvalidCallException' with message 'Setting read-only property: yii\console\Application::authManager'
in /var/www/html/ebip/vendor/yiisoft/yii2/base/Component.php:195
Stack trace:
#0 /var/www/html/ebip/vendor/yiisoft/yii2/BaseYii.php(518): yii\base\Component->set('authManager', Array)
#1 /var/www/html/ebip/vendor/yiisoft/yii2/base/Object.php(105): yii\BaseYii::configure(Object(yii\console\Application), Array)
#2 /var/www/html/ebip/vendor/yiisoft/yii2/base/Application.php(206): yii\base\Object->construct(Array)
#3 /var/www/html/ebip/vendor/yiisoft/yii2/console/Application.php(85): yii\base\Application->construct(Array)
#4 /var/www/html/ebip/yii(26): yii\console\Application->construct(Array)
设置了只读的属性
@sting 需要把它 放入 components组件中,你看一下你的是不是这样放的
'components' => [
'authManager' => [
'class' => 'yii\rbac\DbManager', 'itemTable' => 'auth_item', 'assignmentTable' => 'auth_assignment', 'itemChildTable' => 'auth_item_child',
],
]
@specialnot 对,这个 问题已经解决了,但是你的文档里,后面两步我没有实现,一个RBAC 检查用户是否有权限的beforeAction不知道在哪写;二是 RBAC 为用户选择角色里user视图和控制器我也没有;我刚用YII,请指教
@sting 请问这个“只读属性”是在哪儿设置的,我也遇到了这个问题,被卡住了。
这个是YII1.0的吗?
Stack trace:
#0 D:\shop\vendor\yiisoft\yii2\db\Command.php(1263): yii\db\Schema->convertException(Object(PDOException), 'CREATE TABLE
u...') #1 D:\shop\vendor\yiisoft\yii2\db\Command.php(1075): yii\db\Command->internalExecute('CREATE TABLE
u...')#2 D:\shop\vendor\yiisoft\yii2\db\Migration.php(323): yii\db\Command->execute()
#3 D:\shop\console\migrations\m130524_201442_init.php(26): yii\db\Migration->createTable('{{%user}}', Array, 'CHARACTER SET u...')
#4 D:\shop\vendor\yiisoft\yii2\console\controllers\BaseMigrateController.php(725): m130524_201442_init->up()
#5 D:\shop\vendor\yiisoft\yii2\console\controllers\BaseMigrateController.php(199): yii\console\controllers\BaseMigrateController->migrateUp('m130524201442...')
#6 [internal function]: yii\console\controllers\BaseMigrateController->actionUp(0)
#7 D:\shop\vendor\yiisoft\yii2\base\InlineAction.php(57): call_user_func_array(Array, Array)
#8 D:\shop\vendor\yiisoft\yii2\base\Controller.php(157): yii\base\InlineAction->runWithParams(Array)
#9 D:\shop\vendor\yiisoft\yii2\console\Controller.php(148): yii\base\Controller->runAction('', Array)
#10 D:\shop\vendor\yiisoft\yii2\base\Module.php(528): yii\console\Controller->runAction('', Array)
#11 D:\shop\vendor\yiisoft\yii2\console\Application.php(180): yii\base\Module->runAction('migrate', Array)
#12 D:\shop\vendor\yiisoft\yii2\console\Application.php(147): yii\console\Application->runAction('migrate', Array)
#13 D:\shop\vendor\yiisoft\yii2\base\Application.php(386): yii\console\Application->handleRequest(Object(yii\console\Request))
#14 D:\shop\yii(23): yii\base\Application->run()
#15 {main}
这个错是以为啥?