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.
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'], ], ... ], ...
É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); } }
Le php-doc sera affiché dans l'outil de ligne de commande, entrez yii help, le résultat est le suivant
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 [ 'access' => [ 'class' => AccessControl::className (), 'rules' => [ [ 'actions' => [ 'update-userprofile'], 'allow' => true, 'roles' => [ '@' ] ], [ 'actions' => [ 'manage-user'], 'allow' => true, 'roles' => [ 'admin' ] ] ] ], ]; } public function actionUpdateUserprofile() { return "sth"; } public function actionManageUser() { return "inside"; } }
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
Lorsque l'utilisateur non-administrateur accède
Ce qui précède est Yii2 Notes d'apprentissage du framework (6) -- Contenu RBAC, veuillez faire attention au site Web PHP chinois (www.php.cn) pour plus de contenu connexe !