Внедрение управления доступом на основе ролей — очень простой процесс, и вы даже можете загрузить свои роли из базы данных, если хотите.
Шаг 1: Создание необходимых таблиц в базе данных [Вы также можете применить миграцию с помощью консольной команды yii migrate
вместо шага 1]
Первым шагом является создание необходимых таблиц в базе данных. Ниже приведен sql, который необходимо запустить в базе данных.
drop table if exists `auth_assignment`;
drop table if exists `auth_item_child`;
drop table if exists `auth_item`;
drop table if exists `auth_rule`;
create table `auth_rule`
(
`name` varchar(64) not null,
`data` text,
`created_at` integer,
`updated_at` integer,
primary key (`name`)
) engine InnoDB;
create table `auth_item`
(
`name` varchar(64) not null,
`type` integer not null,
`description` text,
`rule_name` varchar(64),
`data` text,
`created_at` integer,
`updated_at` integer,
primary key (`name`),
foreign key (`rule_name`) references `auth_rule` (`name`) on delete set null on update cascade,
key `type` (`type`)
) engine InnoDB;
create table `auth_item_child`
(
`parent` varchar(64) not null,
`child` varchar(64) not null,
primary key (`parent`, `child`),
foreign key (`parent`) references `auth_item` (`name`) on delete cascade on update cascade,
foreign key (`child`) references `auth_item` (`name`) on delete cascade on update cascade
) engine InnoDB;
create table `auth_assignment`
(
`item_name` varchar(64) not null,
`user_id` varchar(64) not null,
`created_at` integer,
primary key (`item_name`, `user_id`),
foreign key (`item_name`) references `auth_item` (`name`) on delete cascade on update cascade
) engine InnoDB;
Шаг 2: Настройка файла конфигурации
Теперь вы можете настроить файл конфигурации для использования authmanager как DbManager
. Это делается путем добавления следующих строк в раздел компонентов вашего файла конфигурации.
'authManager' => [
'class' => 'yii\rbac\DbManager',
'defaultRoles' => ['guest'],
],
Шаг 3: Добавление и назначение ролей.
Теперь вы можете добавлять роли, просто написав следующий код в соответствующий контроллер.
use yii\rbac\DbManager;
$r=new DbManager;
$r->init();
$test = $r->createRole('test');
$r->add($test);
И вы можете назначить его пользователям,
$r->assign($test, 2);
http://www.yiiframework.com/doc-2.0/guide-security-authorization.html
person
Dency G B
schedule
03.07.2014