Я хочу узнать членство 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