Управление ролью Yii2 с rbac и хранилищем базы данных

Я хочу узнать членство Yii2 и использовать Yii для хранения и извлечения ролей с использованием базы данных.

Я прочитал авторизацию безопасности и как добавить роль к пользователю? и есть ли у кого-нибудь рабочий пример Rbac? а также попробуйте использовать расширение yii2-admin и попытайтесь понять, как Yii управляет пользовательскими ролями, но я не могу найти никаких рабочих образцов или простых пошаговых примеров.

Пожалуйста, направляйте меня и расскажите мне простейшее решение.

Реализация контроля доступа на основе ролей – очень простой процесс, и вы даже можете загружать свои роли из базы данных, если хотите.

Шаг 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

Обновленная ссылка из официальных документов: http://www.yiiframework.com/doc-2.0/guide-security-authorization.html

Если вы работаете с базой данных, вам необходимо добавить authmanager к вашим компонентам приложения:

 return [ // ... 'components' => [ 'authManager' => [ 'class' => 'yii\rbac\DbManager', ], // ... ], 

];

А затем выполните миграцию:

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

Он автоматически создаст необходимые таблицы в вашей базе данных. Теперь вы можете получить доступ к AuthManager через

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