php - tutorial - yii2 rbac rules
Gestión de roles Yii2 con rbac y almacenamiento de bases de datos (2)
Implementar un control de acceso basado en roles es un proceso muy fácil e incluso puede cargar sus roles desde la base de datos si lo desea.
Paso 1: crear tablas necesarias en la base de datos [También puede aplicar migraciones con el comando de la consola yii migrate
lugar del paso 1]
El primer paso es crear las tablas necesarias en la base de datos. A continuación se muestra el sql que necesita ejecutar en la base de datos.
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;
Paso2: configurando el archivo de configuración
Ahora puede configurar el archivo de configuración para usar authmanager como DbManager
. Esto se hace agregando las siguientes líneas a la sección de componentes de su archivo de configuración
''authManager'' => [
''class'' => ''yii/rbac/DbManager'',
''defaultRoles'' => [''guest''],
],
Paso 3: Agregar y asignar roles.
Ahora puede agregar roles simplemente escribiendo el siguiente código en su controlador correspondiente.
use yii/rbac/DbManager;
$r=new DbManager;
$r->init();
$test = $r->createRole(''test'');
$r->add($test);
Y puede asignarlo a los usuarios por
$r->assign($test, 2);
http://www.yiiframework.com/doc-2.0/guide-security-authorization.html
Quiero aprender membresía Yii2 y usar Yii para almacenar y recuperar roles usando una base de datos.
He leído Autorización de seguridad y ¿Cómo agregar rol al usuario? y ¿Alguien tiene un ejemplo de trabajo de Rbac? y también intente utilizar la extensión yii2-admin e intente comprender cómo Yii administra los roles de los usuarios, pero no puedo encontrar ejemplos de trabajo o ejemplos simples paso a paso.
Por favor guíame y cuéntame la solución más simple.
Enlace actualizado de documentos oficiales: http://www.yiiframework.com/doc-2.0/guide-security-authorization.html
Si está trabajando con la base de datos, debe agregar authmanager a los componentes de su aplicación:
return [
// ...
''components'' => [
''authManager'' => [
''class'' => ''yii/rbac/DbManager'',
],
// ...
],
];
Y luego ejecuta una migración:
yii migrate --migrationPath=@yii/rbac/migrations
Creará automáticamente las tablas requeridas en su base de datos. Ahora puede acceder al AuthManager a través de
yii migrate --migrationPath=@yii/rbac/migrations