Heim Backend-Entwicklung PHP-Tutorial Yii2 rbac权限控制之rule教程详解_php实例

Yii2 rbac权限控制之rule教程详解_php实例

Jul 06, 2016 pm 01:32 PM
rbac rbac权限控制 yii2

在我们之前Yii2搭建后台并实现rbac权限控制完整实例教程中,不知道你曾经疑惑过没有一个问题,rule表是做什么的,为什么在整个过程中我们都没有涉及到这张表?

相信我不说,部分人也都会去尝试,或百度或google,到头来也会竹篮打水,这部分讲解的内容少之又少啊!

对于一般的权限系统而言,我们之前做的rbac一般情况下是足够的,即时没有rule,相信你也能实现我们用rule实现的功能。

我们就以官网的例子给出一个具体的操作教程,看看这个神秘的rule到底是做什么的!

看需求:

我们有管理员和普通用户,对于文章系统而言,我们允许管理员对文章的任何操作,但是只允许普通用户创建文章和修改自己创建的文章,注意哦,是允许其修改自己创建的文章,不是不允许修改文章,也不是修改所有的文章!

看yii2 rbac rule怎么去实现,重点是教大家怎么去使用这个rule,也解开众多人心中的节!

在我们添加rule之前,需要先实现 yii\rbac\Rule类的execute方法。

<&#63;php
namespace backend\components;
use Yii;
use yii\rbac\Rule;
class ArticleRule extends Rule
{
public $name = 'article';
public function execute($user, $item, $params)
{
// 这里先设置为false,逻辑上后面再完善
return false;
}
}
Nach dem Login kopieren

接着,我们才可以去后台rule列表(/admin/rule/index)添加rule。具体添加方式可参考下方截图

注意,上面这一步很多人会死在类名的添加上,记得加上我们ArticleRule文件所在的命名空间!

我们看第三步,该步骤也是很容易出错的地方!该篇教程请注意集中精力,前方高能!

我们访问权限列表(/admin/permission/index)新增权限,该权限只针对文章的修改,随后我们将其分配给用户所属角色

需要注意了,此处严重警告,这里新增加的权限所控制的路由也就是文章的更新操作(/article/update)分配给当前用户仅且一次,重复分配当前操作给所属角色或用户,可能造成rule失效,失效原因则是覆盖!

此刻再次刷新文章的更新页面(/article/update/1),很显然直接给我们了403 forbidden没权限访问的提示,也就是我们刚刚添加的rule生效了!如果此刻没生效,请检查上面所说的两个注意点!

然后我们实现ArticleRule::execute方法内业务逻辑,可参考如下:

class ArticleRule extends Rule
{
public $name = 'article';
/**
* @param string|integer $user 当前登录用户的uid
* @param Item $item 所属规则rule,也就是我们后面要进行的新增规则
* @param array $params 当前请求携带的参数. 
* @return true或false.true用户可访问 false用户不可访问
*/
public function execute($user, $item, $params)
{
$id = isset($params['id']) &#63; $params['id'] : null;
if (!$id) {
return false;
}
$model = Article::findOne($id);
if (!$model) {
return false;
}
$username = Yii::$app->user->identity->username;
$role = Yii::$app->user->identity->role;
if ($role == User::ROLE_ADMIN || $username == $model->operate) {
return true;
}
return false;
}
}
Nach dem Login kopieren

最后就是验证了,到底我们所实现的rule认证起作用了没呢?

测试步骤如下可做参考:

1.当前用户创建一篇文章,记得记录当前文章的创建者,其角色是管理员,我们默认User::ROLE_ADMIN

2.创建一个普通用户,且也创建一篇文章,同时也需要记录当前文章的创建者

3.分别用管理员帐号和普通用户登录系统修改这两篇文章,结论自然是满足我们一开始所提的需求,管理员两篇文章均可修改,普通用户只能修改自己的文章

以上所述是小编给大家介绍的Yii2 rbac权限控制之rule教程详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So entfernen Sie Jquery in yii2 So entfernen Sie Jquery in yii2 Feb 17, 2023 am 09:55 AM

So entfernen Sie jquery aus yii2: 1. Bearbeiten Sie die Datei AppAsset.php und kommentieren Sie den Wert „yii\web\YiiAsset“ in der Variablen $depends aus. 2. Bearbeiten Sie die Datei main.php und fügen Sie die Konfiguration als „'yii“ hinzu. unter dem Feld „components“ \web\JqueryAsset' => ['js' => [],'sourcePath' => null,]“, um das JQuery-Skript zu entfernen.

Implementierung der rollenbasierten Zugriffskontrolle (RBAC): Verwendung von PHP und RBAC Implementierung der rollenbasierten Zugriffskontrolle (RBAC): Verwendung von PHP und RBAC Jun 20, 2023 pm 10:39 PM

Angesichts der Beliebtheit von Internetanwendungen hoffen wir, die Daten innerhalb der Anwendung zu schützen, um sicherzustellen, dass sensible Daten nicht missbraucht oder gestohlen werden. Eine der Lösungen ist die Verwendung einer rollenbasierten Zugriffskontrolle (RBAC). Rollenbasierte Zugriffskontrolle (RBAC) ist ein Zugriffskontrollmodell, das auf der Beziehung zwischen Benutzern und Rollen basiert. Die Kernidee dieses Modells besteht darin, die Rolle des Benutzers mit dem Zugriffskontrollvorgang zu verknüpfen, anstatt den Zugriffskontrollvorgang direkt mit dem Benutzer zu verknüpfen. Dieser Ansatz verbessert die Flexibilität der Zugangskontrolle,

Ein paar ausgewählte CTF-Übungen helfen Ihnen beim Erlernen des yii2-Frameworks! Ein paar ausgewählte CTF-Übungen helfen Ihnen beim Erlernen des yii2-Frameworks! Feb 23, 2022 am 10:33 AM

In diesem Artikel werden Sie in das yii2-Framework eingeführt, einige CTF-Übungen vorgestellt und diese zum Erlernen des yii2-Frameworks verwendet. Ich hoffe, dass es für alle hilfreich ist.

So installieren Sie die Redis-Erweiterung mit dem YII2-Framework So installieren Sie die Redis-Erweiterung mit dem YII2-Framework May 26, 2023 pm 06:41 PM

1. Sie müssen die Windows-Version des Master-Zweigs von yii2-redis Composer herunterladen. 2. Entpacken und nach „vendor/yiisoft“ kopieren. 3. „yiisoft/yii2-redis“=>array(‘name‘=>‘yiisoft“ in den Erweiterungen hinzufügen .php unter yiisoft /yii2-redis','version'=>'2.0.

Wie verwalte ich RBAC-Berechtigungen in ThinkPHP6? Wie verwalte ich RBAC-Berechtigungen in ThinkPHP6? Jun 12, 2023 am 08:10 AM

Mit der kontinuierlichen Weiterentwicklung des Internets und der weit verbreiteten Nutzung von Anwendungen erfordern immer mehr Websites und Anwendungen eine Zugriffskontrolle, um die Sicherheit sensibler Informationen und Ressourcen zu gewährleisten. Mit der kontinuierlichen Weiterentwicklung des Projekts und der kontinuierlichen Erweiterung der Funktionen hat sich das RBAC-Berechtigungsverwaltungssystem zu einer sehr beliebten und ausgereiften Lösung entwickelt. In diesem Artikel stellen wir vor, wie Sie RBAC für die Berechtigungsverwaltung im ThinkPHP6-Framework verwenden. Was ist RBAC-Berechtigungsmanagement? RBAC (Role-BasedAccess

Meistern Sie die Rolle der PHP-Based Access Control (RBAC)-Authentifizierung Meistern Sie die Rolle der PHP-Based Access Control (RBAC)-Authentifizierung Aug 07, 2023 pm 03:39 PM

Beherrschen der Rolle in PHP – BasedAccessControl (RBAC) Authentifizierung Einführung: Authentifizierung ist eine wesentliche Funktion bei der Entwicklung von Webanwendungen. Role-BasedAccessControl (RBAC) ist ein häufig verwendeter Authentifizierungsmodus, der die Zugriffskontrolle rund um Rollen verwaltet und so die Verteilung von Berechtigungen flexibler und einfacher zu verwalten macht. In diesem Artikel wird die Implementierung der RBAC-Authentifizierung in PHP vorgestellt und relevante Codebeispiele bereitgestellt. 1. Überblick über die Rolle von RBAC

So anzeigen Sie Fehlereingaben in Yii2 an So anzeigen Sie Fehlereingaben in Yii2 an Apr 18, 2025 pm 11:09 PM

In YII2 gibt es zwei Hauptmethoden, um Fehleranforderungen anzuzeigen. Man kann yii :: $ app- & amp; gt; errorHandler- & amp; gt; exception () verwenden, um Fehler automatisch zu fangen und anzuzeigen, wenn eine Ausnahme auftritt. Das andere besteht darin, $ thderror () zu verwenden, wodurch ein Fehler angezeigt wird, wenn die Modellvalidierung fehlschlägt und in der Ansicht über $ model- & amp; gt; getRors () zugegriffen werden kann. In der Ansicht können Sie verwenden, wenn ($ errors = $ model- & amp; gt; getRrors ())

PHP und Yii2 werden integriert, um die RBAC-Berechtigungsverwaltungsfunktion zu implementieren PHP und Yii2 werden integriert, um die RBAC-Berechtigungsverwaltungsfunktion zu implementieren Jun 25, 2023 pm 09:18 PM

Mit der rasanten Entwicklung der Internet-Technologie müssen sich immer mehr Anwendungen mit Problemen bei der Berechtigungsverwaltung befassen. RBAC (Role-Based Access Control) ist als ausgereiftes Berechtigungsverwaltungsmodell in verschiedenen Anwendungen weit verbreitet. Im PHP-Bereich bietet das Yii2-Framework eine vollständige RBAC-Implementierungslösung. In diesem Artikel wird erläutert, wie PHP und Yii2 integriert werden, um die RBAC-Berechtigungsverwaltung zu implementieren. 1. Was ist RBAC? RBAC ist ein häufig verwendetes Berechtigungsverwaltungsmodell, also eine rollenbasierte Zugriffskontrolle. bei RBAC

See all articles