Maison > php教程 > PHP开发 > Notes d'étude du cadre Yii2 (6) -- RBAC

Notes d'étude du cadre Yii2 (6) -- RBAC

黄舟
Libérer: 2016-12-30 10:00:22
original
1408 Les gens l'ont consulté

En plus des skins, il existe également un point fonctionnel très important dans le travail de préparation en arrière-plan, qui est le contrôle des autorisations.

Yii2 fournit un cadre de base pour le contrôle des autorisations, en utilisant RBAC (Role Based Access Control), un contrôle d'accès basé sur les rôles.

Pour faire simple, différents rôles ont des autorisations différentes. Par exemple, le rôle administrateur/invité peut parcourir les pages et gérer les utilisateurs, tandis que les utilisateurs invités ne peuvent parcourir que les pages, etc. Un utilisateur spécifique peut être lié à un rôle pour exercer les autorisations de ce rôle.

Copiez le fichier supplier/yiisoft/yii2/rbac/migration/m140506_102106_rbac_init.php dans le fichier console/migration.

Dans le répertoire yii, exécutez yii migrate. Vous serez invité à exécuter le script que nous venons de copier. Entrez oui. Une fois terminé, vous pouvez voir que quatre nouvelles tables ont été créées dans la base de données.

Notes détude du cadre Yii2 (6) -- RBAC

Pour les fonctions spécifiques de ces tables, veuillez vous référer à http://blog.csdn.net/yiifans/article/details/27528327
Je n'irai pas dans les détails ici, mais expliquez principalement comment utiliser rbac.

Nous effectuons d’abord quelques configurations dans notre code.

common/config/main-local.php, modifiez authManager pour appeler la base de données, comme suit

...     
 'components' => [  
        ...  
        'authManager' => [  
            'class' => 'yii\rbac\DbManager',  
            'defaultRoles' => ['guest'],  
        ],  
        ...  
 ],  
...
Copier après la connexion

Écrivez un script de ligne de commande pour initialiser rbac et utiliser rbac.

Créez un nouveau RbacController.php sous console/controllers/

Tout d'abord, le contrôleur sous console/controllers est exécuté via l'outil de ligne de commande yii dans le répertoire racine yii, et prend également en charge route , c'est-à-dire que la méthode actionInit de RbacController est appelée en utilisant yii rbac/init.

Le code de RbacController est le suivant

<?php

namespace console\controllers;

use yii\console\Controller;
class RbacController extends Controller {
	/**
	 * Init base roles
	 */
	public function actionInit() {
		
		$auth = \Yii::$app->authManager;
		
		$auth->removeAll();
		
		$managerUser = $auth->createPermission("managerUser");
		$managerUser->description = "manage user list";
		$auth->add($managerUser);
		
		$guest = $auth->createRole("guest");
		$auth->add($guest);
		
		$admin = $auth->createRole("admin");
		$auth->add($admin);
		$auth->addChild($admin, $managerUser);
	}
	
	/**
	 * Assign a specific role to the given user id 
	 * @param int $userid
	 * @param string $role
	 */
	public function actionAssign($userid, $role) {
		$auth = \Yii::$app->authManager;
		$roleItem = $auth->getRole($role);
		If ($roleItem == null) {
			throw new Exception("the role is not found");
		}
		$auth->assign($roleItem, $userid);
	}
}
Copier après la connexion

Le php-doc sera affiché dans l'outil de ligne de commande, entrez yii help, le résultat est le suivant

Notes détude du cadre Yii2 (6) -- RBAC

Entrez d'abord yii rbac/init, puis deux rôles seront créés, admin et invité Admin auront les autorisations managerUser, mais pas l'invité.

Ensuite, entrez yii rbac/assign 1 admin, qui consiste à attribuer un rôle d'administrateur à l'utilisateur avec l'ID utilisateur 1.

Une fois la préparation terminée, testez si les autorisations prennent effet.

Créez un nouveau backend/controllers/UserController.php, remplacez la méthode des comportements et configurez différentes autorisations pour différentes actions. Ici, nous ajoutons une configuration à l'action gestionnaire-utilisateur qui nécessite les autorisations d'accès manageUser. Le code spécifique est le suivant.

<?php
namespace backend\controllers;

use yii\web\Controller;
use yii\filters\AccessControl;
class UserController extends Controller {
	
	public function behaviors() {
		return [ 
			&#39;access&#39; => [ 
				&#39;class&#39; => AccessControl::className (),
				&#39;rules&#39; => [ 
					[ 
						&#39;actions&#39; => [ &#39;update-userprofile&#39;],
						&#39;allow&#39; => true,
						&#39;roles&#39; => [ &#39;@&#39; ]
					],
					[
						&#39;actions&#39; => [ &#39;manage-user&#39;],
						&#39;allow&#39; => true,
						&#39;roles&#39; => [ &#39;admin&#39; ]
					]
				] 
			],
		];
	}
	
	public function actionUpdateUserprofile()
	{
		return "sth";
	}
	
	public function actionManageUser() {
		return "inside";
	}
}
Copier après la connexion

Le rôle de @ signifie que tout utilisateur connecté peut accéder, et le rôle d'administrateur signifie que seuls les utilisateurs ayant le rôle d'administrateur peuvent accéder.

Vous pouvez tester les résultats.

Lorsque l'utilisateur administrateur accède

Notes détude du cadre Yii2 (6) -- RBAC

Lorsque l'utilisateur non-administrateur accède

Notes détude du cadre Yii2 (6) -- RBAC

Ce qui précède est Yii2 Notes d'apprentissage du framework (6) -- Contenu RBAC, veuillez faire attention au site Web PHP chinois (m.sbmmt.com) pour plus de contenu connexe !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal