usuarios tutorial español control basado acceso php yii yii2 yii-extensions rbac

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