浅析Yii中使用RBAC的完全指南(用户角色权限控制)
本篇文章是对Yii中使用RBAC的完全指南(用户角色权限控制)进行了详细的分析介绍,需要的朋友参考下
写在前面
* 我的feed地址已经修改为: ,请更新您的阅读器。
* 以下内容适合Yii 1.0.x,其他版本可能有略微的差别。
* 根据您的评论和反馈,本文会不断进行修改和补充,香港虚拟主机,以方便新学习者。
开始准备
Yii提供了强大的配置机制和很多现成的类库。在Yii中使用RBAC是很简单的,完全不需要再写RBAC代码。所以准备工作就是,打开编辑器,跟我来。
设置参数、建立数据库
在配置数组中,增加以下内容:
复制代码 代码如下:
‘components‘ => array(
//……
‘authManager‘=>array(
‘class‘=>‘CDbAuthManager‘,//认证类名称
‘defaultRoles‘=>array(‘guest‘),//默认角色
‘itemTable‘ => ‘pre_auth_item‘,//认证项表名称
‘itemChildTable‘ => ‘pre_auth_item_child‘,//认证项父子关系
‘assignmentTable‘ => ‘pre_auth_assignment‘,//认证项赋权关系
),
//……
那这三个数据表怎么建立呢?很简单,去看framework/web/auth/schema.sql。注意要和你的自定义的表名称对应起来。比如SQL文件中的AuthItem你要修改为pre_auth_item。然后在数据库中运行这个SQL文件中的语句。
了解概念
你可能要问,剩下的代码呢?我告诉你,没有啦。RBAC系统就这样建立起来了。但是为了使用它,你需要了解它的运行机制。我会尽量讲的啰嗦一点……(官方的RBAC文档在这里,但是我曾经看了4-5遍才明白。)
三个概念
你需要了解的是,授权项目可分为operations(行动),tasks(任务)和 roles(角色)。
一个用户拥有一个或者多个角色,比如,我们这里有三个角色:银行行长、银行职员、顾客。我们假设:
* 张行长 有角色:银行行长、银行职员、顾客(人家自己可以存钱嘛)。
* 王职员 有角色:银行职员、顾客。
* 小李 有角色:顾客。
那么,相应的,只要顾客可以做的事情,小李就可以做,王职员和张行长也可以。银行职员可以做的事情,王职员和张行长都可以做,网站空间,小李就不可以了。
比如,一个“顾客”可以存钱,那么拥有“顾客”角色的张行长、王职员、小李都可以存钱。“银行职员”可以打印顾客的交易记录,那么有“银行职员”角色的张行长和王职员都可以,而小李不行,必须找一个有“银行职员”角色的人才可以打印详细的交易记录。一个“银行行长”才可以进入银行钱库提钱,那么只有张行长可以,服务器空间,因为它才有“银行行长”的角色。
这就是基于角色的认证体系,简称RBAC。
角色的继承
角色是可以继承的,比如我们规定如下:
* 凡是“银行行长”都是“银行职员”,也就是说,只要银行职员可以做的事情,银行行长都可以做。
* 凡是“银行职员”都是顾客,同上,顾客可以做的事情银行职员也可以做。
那么角色关系就变成了:
* 张行长 有角色:银行行长。
* 王职员 有角色:银行职员。
* 小李 有角色:顾客。
这样更简单了,这就是角色的继承。
任务的继承
一个任务(task)是可以包含另外一个任务的,我们举个例子,比如“进入银行”。
我们设定“顾客”这个角色有“进入银行”的权限。也就是说,“顾客”可以执行“进入银行”的任务。接下来,我们假设“进入柜台”是进入银行的父权限,也就是说,“进入柜台”包含“进入银行”。只要能“进入柜台”的人都可以“进入银行”。我们把“进入柜台”这个任务权限给“银行职员”。
那么从角色上来说,王职员可以进入银行,因为王职员的角色是“银行职员”,而“银行职员”包含了“顾客”的角色。那么“顾客”可以进行的“任务”对于“银行职员”来说也是可以进行的。而“顾客”可以“进入银行”,那么王职员也可以“进入银行”。这是角色的继承带来的。
我们再假设有个赵领导,是上级领导,可以进入柜台进行视察。那么,我们的任务关系是:
* 赵领导 有任务:进入柜台。
那么,赵领导就可以“进入银行”。因为“进入银行”是被“进入柜台”包含的任务。只要可以执行“进入柜台”的人都可以执行“进入银行”。这就是任务的继承。
关于行动
行动是不可划分的一级。也就是说。而一个行动是不能包含其他行动的。假设我们有个行动叫“从银行仓库中提钱”。我们把这个行动作包含“进入柜台”。那么只要可以执行“从银行仓库中提钱”的角色都可以执行“进入柜台”这个任务。
三者关系
* 一个角色可以包含另外一个或者几个角色。
* 一个角色可以包含另外一个或者几个任务。
* 一个角色可以包含另外一个或者几个行动。
*
* 一个任务可以包含另外一个或者几个任务。
* 一个任务可以包含另外一个或者几个行动。
*
* 一个行动只能被角色或者任务包含,行动是不可以包含其他,也不可再分。
这样,就形成了一个权限管理体系。关于“任务”和“行动”,你不必思考其字面上的意义。这两者就是形成两层权限。
进行赋权
我们建立了RBAC权限管理,就需要进行对权限的WEB管理。这些就需要你自己写代码了。
根据不同种类的项目调用下列方法之一定义授权项目:
* CAuthManager::createRole
* CAuthManager::createTask
* CAuthManager::createOperation
一旦我们拥有一套授权项目,我们可以调用以下方法建立授权项目关系:
* CAuthManager::addItemChild
* CAuthManager::removeItemChild
* CAuthItem::addChild
* CAuthItem::removeChild
最后,我们调用下列方法来分配角色项目给各个用户:
* CAuthManager::assign
* CAuthManager::revoke
下面我们将展示一个例子是关于用所提供的API建立一个授权等级:
复制代码 代码如下:
$auth=Yii::app()->authManager;
$auth->createOperation('createPost','create a post');
$auth->createOperation('readPost','read a post');
$auth->createOperation('updatePost','update a post');
$auth->createOperation('deletePost','delete a post');
$bizRule='return Yii::app()->user->id==$params["post"]->authID;';
$task=$auth->createTask('updateOwnPost','update a post by author himself',$bizRule);
$task->addChild('updatePost');
$role=$auth->createRole('reader');
$role->addChild('readPost');
$role=$auth->createRole('author');
$role->addChild('reader');
$role->addChild('createPost');
$role->addChild('updateOwnPost');
$role=$auth->createRole('editor');
$role->addChild('reader');
$role->addChild('updatePost');
$role=$auth->createRole('admin');
$role->addChild('editor');
$role->addChild('author');
$role->addChild('deletePost');
$auth->assign('reader','readerA');
$auth->assign('author','authorB');
$auth->assign('editor','editorC');
$auth->assign('admin','adminD');
也就是说,你需要自己写一个管理界面,来列出你的角色、任务、行动,然后可以在这个界面上进行管理。比如增加、删除、修改。
权限检查
假设你在你的管理界面进行了赋权,那么可以在程序里面进行权限检查:
复制代码 代码如下:

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Avec le développement rapide des médias sociaux, Xiaohongshu est devenue l'une des plateformes sociales les plus populaires. Les utilisateurs peuvent créer un compte Xiaohongshu pour montrer leur identité personnelle et communiquer et interagir avec d'autres utilisateurs. Si vous avez besoin de trouver le numéro Xiaohongshu d’un utilisateur, vous pouvez suivre ces étapes simples. 1. Comment utiliser le compte Xiaohongshu pour trouver des utilisateurs ? 1. Ouvrez l'application Xiaohongshu, cliquez sur le bouton « Découvrir » dans le coin inférieur droit, puis sélectionnez l'option « Notes ». 2. Dans la liste des notes, recherchez la note publiée par l'utilisateur que vous souhaitez rechercher. Cliquez pour accéder à la page de détails de la note. 3. Sur la page de détails de la note, cliquez sur le bouton « Suivre » sous l'avatar de l'utilisateur pour accéder à la page d'accueil personnelle de l'utilisateur. 4. Dans le coin supérieur droit de la page d'accueil personnelle de l'utilisateur, cliquez sur le bouton à trois points et sélectionnez « Informations personnelles »

Dans les systèmes Ubuntu, l'utilisateur root est généralement désactivé. Pour activer l'utilisateur root, vous pouvez utiliser la commande passwd pour définir un mot de passe, puis utiliser la commande su- pour vous connecter en tant que root. L'utilisateur root est un utilisateur disposant de droits d'administration système illimités. Il dispose des autorisations nécessaires pour accéder et modifier les fichiers, la gestion des utilisateurs, l'installation et la suppression de logiciels et les modifications de la configuration du système. Il existe des différences évidentes entre l'utilisateur root et les utilisateurs ordinaires. L'utilisateur root possède la plus haute autorité et des droits de contrôle plus étendus sur le système. L'utilisateur root peut exécuter des commandes système importantes et modifier des fichiers système, ce que les utilisateurs ordinaires ne peuvent pas faire. Dans ce guide, j'explorerai l'utilisateur root Ubuntu, comment se connecter en tant que root et en quoi il diffère d'un utilisateur normal. Avis

Il permet aux utilisateurs d'effectuer des opérations plus approfondies et de personnaliser le système. L'autorisation root est une autorisation d'administrateur dans le système Android. L'obtention des privilèges root nécessite généralement une série d'étapes fastidieuses, qui peuvent toutefois ne pas être très conviviales pour les utilisateurs ordinaires. En activant les autorisations root en un seul clic, cet article présentera une méthode simple et efficace pour aider les utilisateurs à obtenir facilement les autorisations système. Comprenez l'importance et les risques des autorisations root et disposez d'une plus grande liberté. Les autorisations root permettent aux utilisateurs de contrôler entièrement le système de téléphonie mobile. Renforcez les contrôles de sécurité, personnalisez les thèmes et les utilisateurs peuvent supprimer les applications préinstallées. Par exemple, la suppression accidentelle de fichiers système provoquant des pannes du système, une utilisation excessive des privilèges root et l'installation par inadvertance de logiciels malveillants sont également risquées. Avant d'utiliser les privilèges root

CrystalDiskMark est un petit outil de référence pour disques durs qui mesure rapidement les vitesses de lecture/écriture séquentielles et aléatoires. Ensuite, laissez l'éditeur vous présenter CrystalDiskMark et comment utiliser crystaldiskmark~ 1. Introduction à CrystalDiskMark CrystalDiskMark est un outil de test de performances de disque largement utilisé pour évaluer la vitesse et les performances de lecture et d'écriture des disques durs mécaniques et des disques SSD (SSD). ). Performances d’E/S aléatoires. Il s'agit d'une application Windows gratuite qui fournit une interface conviviale et divers modes de test pour évaluer différents aspects des performances du disque dur. Elle est largement utilisée dans les revues de matériel.

Configuration de VSCode en chinois : un guide complet Dans le développement de logiciels, Visual Studio Code (VSCode en abrégé) est un environnement de développement intégré couramment utilisé. Pour les développeurs qui utilisent le chinois, la configuration de VSCode sur l'interface chinoise peut améliorer l'efficacité du travail. Cet article vous fournira un guide complet, détaillant comment définir VSCode sur une interface chinoise et fournissant des exemples de code spécifiques. Étape 1 : Téléchargez et installez le pack de langue. Après avoir ouvert VSCode, cliquez sur la gauche.

foobar2000 est un logiciel qui peut écouter des ressources musicales à tout moment. Il vous offre toutes sortes de musique avec une qualité sonore sans perte. La version améliorée du lecteur de musique vous permet d'obtenir une expérience musicale plus complète et plus confortable. lire l'audio avancé sur l'ordinateur. L'appareil est transplanté sur le téléphone mobile pour offrir une expérience de lecture de musique plus pratique et efficace. La conception de l'interface est simple, claire et facile à utiliser. opérations pour démarrer rapidement. Il prend également en charge une variété de skins et de thèmes, personnalisez les paramètres en fonction de vos propres préférences et créez un lecteur de musique exclusif prenant en charge la lecture de plusieurs formats audio. Il prend également en charge la fonction de gain audio pour régler le volume. selon vos propres conditions auditives pour éviter les dommages auditifs causés par un volume excessif. Ensuite, laisse-moi t'aider

Blue Wings Chaos Effect présente un casting diversifié de personnages, chacun avec une identité et une histoire uniques. Pour cette raison, l'éditeur a spécialement compilé une introduction aux personnages de BlazBlue Chaos Effect pour tous les joueurs. Combien y a-t-il de personnages dans BlazBlue Chaos Effect ? Réponse : Il y a 7 personnages. 1. [Dieu de la mort] Ragnar Chad Bradedge (surnommé RG, Nissan), son frère et sa sœur ont été élevés par des religieuses de l'église. Un jour, l'un des six héros du méchant est entré par effraction, a tué les religieuses et les a incendiées. Church, a emmené sa sœur, laissant derrière lui son jeune frère "L'arme des choses" Ice Sword Snow Girl. 2. Noel Vermillion La fille adoptive de la famille Vermillion ressemble presque à la sœur de Ragnar. Après avoir obtenu son diplôme, il rejoint le conseil d'administration en tant que secrétaire du frère cadet de Ragnar. 3. λ-11 est collectivement connu sous le nom de Lambda et Onzième Sœur. Après que le développeur initial ait abandonné, Kokonoe a sauvé et

NetEase Mailbox, en tant qu'adresse e-mail largement utilisée par les internautes chinois, a toujours gagné la confiance des utilisateurs grâce à ses services stables et efficaces. NetEase Mailbox Master est un logiciel de messagerie spécialement créé pour les utilisateurs de téléphones mobiles. Il simplifie grandement le processus d'envoi et de réception d'e-mails et rend le traitement de nos e-mails plus pratique. Alors comment utiliser NetEase Mailbox Master, et quelles sont ses fonctions spécifiques Ci-dessous, l'éditeur de ce site vous donnera une introduction détaillée, en espérant vous aider ! Tout d’abord, vous pouvez rechercher et télécharger l’application NetEase Mailbox Master dans la boutique d’applications mobiles. Recherchez « NetEase Mailbox Master » dans l'App Store ou Baidu Mobile Assistant, puis suivez les instructions pour l'installer. Une fois le téléchargement et l'installation terminés, nous ouvrons le compte de messagerie NetEase et nous connectons. L'interface de connexion est la suivante
