ThinkPHP ist ein Open-Source-PHP-Framework, das entwickelt wurde, um die Entwicklung von Unternehmensanwendungen und die Entwicklung agiler WEB-Anwendungen zu vereinfachen. Es wurde erstmals Anfang 2006 geboren und war früher als FCS bekannt. Am Neujahrstag 2007 wurde es offiziell in ThinkPHP umbenannt und im Rahmen der Apache2-Open-Source-Vereinbarung veröffentlicht. Die frühe ideologische Architektur stammt von Struts. Später, nach kontinuierlicher Verbesserung und Verbesserung, lernte sie auch von vielen hervorragenden ausländischen Frameworks und Modellen, nutzte objektorientierte Entwicklungsstrukturen und MVC-Modelle und integrierte die Action- und DAO-Ideen von Struts sowie die TagLib (Tag-Bibliothek) von JSP ), das ORM-Mapping und der ActiveRecord-Modus von RoR, der CURD und einige gängige Operationen, den Einzeleingabemodus usw. kapselt, weisen eine einzigartige Leistung in Bezug auf Vorlagen-Engine, Caching-Mechanismus, Authentifizierungsmechanismus und Skalierbarkeit auf
Adresse für die Kurswiedergabe: http://www.php.cn/course/350.html
Der Unterrichtsstil des Lehrers :
Die Vorlesungen sind freundlich und natürlich, unprätentiös, nicht anmaßend oder absichtlich übertrieben, sondern sprechen eloquent und sorgfältig und schaffen eine Art Gleichberechtigung zwischen Lehrern und Schülern. In einer gemeinschaftlichen und harmonischen Atmosphäre, still Es findet ein emotionaler Austausch statt und der Wunsch und die Erkundung von Wissen werden in einfache und reale Unterrichtssituationen integriert. Die Schüler erlangen Wissen in stillem Denken und stiller Zustimmung.
Der schwierigere Punkt in diesem Video ist die Einführung von ThinkPHP-RBAC:
RBAC ist die Abkürzung für Role-Based Access Control, was auf Chinesisch als rollenbasierte Zugriffskontrolle übersetzt wird. Benutzer werden mit Rollen und Rollen verknüpft Berechtigungen [seine Architektur ist von der Berechtigungsverwaltungssteuerung von GBAC (GROUP-Based Access Control) des Betriebssystems inspiriert]. Einfach ausgedrückt kann ein Benutzer mehrere Rollen haben und jede Rolle verfügt über mehrere Berechtigungen. Auf diese Weise wird ein Berechtigungsmodell „Benutzer-Rolle-Berechtigung“ aufgebaut. In diesem Modell besteht im Allgemeinen eine Viele-zu-Viele-Beziehung zwischen Benutzern und Rollen sowie zwischen Rollen und Berechtigungen.
In vielen praktischen Anwendungen erfordert das System nicht nur, dass Benutzer eine einfache Registrierung durchführen, sondern auch, dass Benutzer unterschiedlicher Ebenen auf unterschiedliche Ressourcen zugreifen müssen unterschiedliche Betriebsberechtigungen. Und in der Unternehmensentwicklung ist das Rechteverwaltungssystem zu einem der effizientesten Module für die wiederholte Entwicklung geworden. In mehreren Systemen kann die entsprechende Berechtigungsverwaltung nur die Verwaltungsanforderungen des eigenen Systems erfüllen. Es kann sich in Bezug auf Datenbankdesign, Berechtigungszugriff und Berechtigungsverwaltungsmechanismen unterscheiden. Diese Inkonsistenz hat auch die folgenden Konsequenzen:
Mehrere Systeme zu warten und das Rad neu zu erfinden ist Zeitverschwendung
Die wiederholte Pflege von Daten wie Benutzerverwaltung und Organisationsmechanismen macht es schwierig, Datenintegrität und -konsistenz zu gewährleisten
Unterschiedliche Berechtigungssystemdesigns, unterschiedlich Aufgrund des konzeptionellen Verständnisses und der entsprechenden technischen Unterschiede gibt es Probleme bei der Integration zwischen Systemen, Single Sign-On ist schwierig und komplexe Unternehmenssysteme bringen Schwierigkeiten mit sich
RBAC basiert auf kontinuierlicher Praxis Danach ist ein relativ ausgereiftes Zugriffskontrollschema vorgeschlagen wurde. Die Praxis hat gezeigt, dass die Verwendung eines Berechtigungsverwaltungssystems auf Basis des RBAC-Modells folgende Vorteile bietet: Da Änderungen zwischen Rollen und Berechtigungen relativ langsamer sind als Änderungen zwischen Rollen und Benutzerbeziehungen, wird die Komplexität der Berechtigungsverwaltung verringert und der Verwaltungsaufwand verringert. Und es kann die Sicherheitsrichtlinien des Anwendungssystems flexibel unterstützen und bietet eine hervorragende Skalierbarkeit für Änderungen im Anwendungssystem. In Bezug auf die Bedienung ist die Berechtigungsverteilung intuitiv, leicht zu verstehen und für hierarchische Benutzer geeignet. Ebenenformen; Wiederverwendung Starker Sex.
RBAC-Implementierungssystem in ThinkPHP
RBAC in ThinkPHP basiert auf dem Acegi-Sicherheitssystem von Java Spring als Referenzprototyp und wurde entsprechend vereinfacht, um sich an die aktuelle ThinkPHP-Struktur anzupassen und eine Multi- Ein mehrschichtiges, anpassbares Sicherheitssystem zur Sicherheitskontrolle für die Anwendungsentwicklung. Das Sicherheitssystem besteht hauptsächlich aus den folgenden Teilen:
Security Interceptor
Authentication Manager
Decision Access Manager
Running Identity Manager
Security Interceptor
Sicherheits-Interceptor ist wie eine Tür. Es kann viele verschiedene Sicherheitskontrollverbindungen im Sicherheitsschutzsystem des Systems geben. Sobald Sie die Sicherheitssystemzertifizierung in einer bestimmten Verbindung nicht bestehen, wird der Sicherheits-Interceptor dies tun Abfangen durchführen.
Authentifizierungsmanager
Die erste Tür des Schutzsystems ist der Authentifizierungsmanager. Der Authentifizierungsmanager ist dafür verantwortlich, festzustellen, wer Sie sind (normalerweise ein Benutzername). Anmeldeinformationen (normalerweise ein Passwort) oder weitere Informationen dazu. Vereinfacht ausgedrückt überprüft der Authentifizierungsmanager, ob Ihre Identität im Autorisierungsbereich des Sicherheitsschutzsystems liegt.
Zugriffsentscheidungsmanagement
Obwohl Sie die Identitätsprüfung des Authentifizierungsmanagers bestanden haben, bedeutet dies nicht, dass Sie im System alles tun können, was Sie wollen, da Sie weiterhin auf die Tür zur Entscheidungsverwaltung zugreifen müssen. Der Zugriffsentscheidungsmanager autorisiert Benutzer und bestimmt, ob Sie ein bestimmtes Modul des Systems betreten und einen bestimmten Vorgang ausführen können, indem er Ihre Identitätsauthentifizierungsinformationen und die mit den geschützten Ressourcen verknüpften Sicherheitsattribute berücksichtigt. Wenn die Sicherheitsregeln beispielsweise vorschreiben, dass nur Supervisoren auf ein bestimmtes Modul zugreifen dürfen, Ihnen jedoch keine Supervisor-Berechtigungen erteilt werden, fängt der Security Interceptor Ihren Zugriffsvorgang ab.
Der Entscheidungszugriffsmanager kann nicht alleine ausgeführt werden und muss sich bei der Identitätsbestätigung zunächst auf den Authentifizierungsmanager verlassen. Daher sind der Authentifizierungsmanager und der Entscheidungszugriffsmanager bereits beim Laden des Zugriffsentscheidungsfilters enthalten.
Um den unterschiedlichen Anforderungen von Anwendungen gerecht zu werden, verwendet ThinkPHP bei der Verwaltung der Zugriffsentscheidung zwei Modi: den Anmeldemodus und den Sofortmodus. Im Anmeldemodus liest das System die Autorisierungsinformationen des Benutzers und ändert sie in die Sitzung, wenn sich der Benutzer anmeldet, und ruft die Autorisierungsinformationen beim nächsten Mal nicht erneut ab. Das heißt, selbst wenn der Administrator die Berechtigungen des Benutzers ändert, werden die Änderungen erst wirksam, wenn sich der Benutzer das nächste Mal anmeldet. Der unmittelbare Modus besteht darin, das oben genannte Problem zu lösen. Bei jedem Zugriff auf ein Modul oder einen Vorgang des Systems wird sofort überprüft, ob der Benutzer über die Berechtigung für das Modul und den Vorgang verfügt, wodurch die Sicherheit des Systems erhöht wird.
Identitätsmanager ausführen
Der Nutzen von Identitätsmanager ist in den meisten Anwendungssystemen begrenzt. Wenn beispielsweise ein bestimmter Vorgang oder ein bestimmtes Modul die Sicherheit mehrerer Identitäten erfordert, können Sie Identitätsmanager ausführen Ihre aktuelle Identität mit einer anderen Identität, sodass Sie tiefer im Anwendungssystem auf geschützte Objekte zugreifen können. Diese Sicherheitssystemebene ist derzeit nicht in RBAC implementiert.
RBAC-Authentifizierungsprozess in ThinkPHP
Entsprechend dem oben genannten Sicherheitssystem ist der RBAC-Authentifizierungsprozess von ThinkPHP ungefähr wie folgt:
Bestimmen Sie, ob der aktuelle Betrieb des aktuellen Moduls erfolgt erfordert Authentifizierung
Wenn eine Authentifizierung erforderlich ist und Sie nicht angemeldet sind, springen Sie zum Authentifizierungs-Gateway. Wenn Sie bereits angemeldet sind, führen Sie 5 aus
Benutzeridentitätsauthentifizierung durch delegierte Authentifizierung
Rufen Sie die Entscheidungszugriffsliste des Benutzers ab
Bestimmen Sie, ob der aktuelle Benutzer Zugriffsrechte hat
Der spezifische Implementierungsprozess der Rechteverwaltung
Einführung in RBAC-bezogene Datenbanken
Das ThinkPHP-Komplettpaket enthält die RBAC-Verarbeitungsklasse RBAC.class .php-Datei, die sich in Extend/Library/ORG/Util befindet. Öffnen Sie die Datei, die die 4 für die Verwendung von RBAC erforderlichen Tabellen enthält. Die SQL-Anweisungen lauten wie folgt (bitte ersetzen Sie das Tabellenpräfix nach dem Kopieren):
CREATE TABLE IF NOT EXISTS `ly_access` ( `role_id` smallint(6) unsigned NOT NULL, `node_id` smallint(6) unsigned NOT NULL, `level` tinyint(1) NOT NULL, `module` varchar(50) DEFAULT NULL, KEY `groupId` (`role_id`), KEY `nodeId` (`node_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `ly_node` ( `id` smallint(6) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `title` varchar(50) DEFAULT NULL, `status` tinyint(1) DEFAULT '0', `remark` varchar(255) DEFAULT NULL, `sort` smallint(6) unsigned DEFAULT NULL, `pid` smallint(6) unsigned NOT NULL, `level` tinyint(1) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `level` (`level`), KEY `pid` (`pid`), KEY `status` (`status`), KEY `name` (`name`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `ly_role` ( `id` smallint(6) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `pid` smallint(6) DEFAULT NULL, `status` tinyint(1) unsigned DEFAULT NULL, `remark` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`), KEY `pid` (`pid`), KEY `status` (`status`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; CREATE TABLE IF NOT EXISTS `ly_role_user` ( `role_id` mediumint(9) unsigned DEFAULT NULL, `user_id` char(32) DEFAULT NULL, KEY `group_id` (`role_id`), KEY `user_id` (`user_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Hier empfehlen wir auch den Download von Quellcode-Ressourcen: http://www.php.cn/xiazai/learn/2134
Materialien
Dokumente
Quellcode
Illustration
Vorlage
Das obige ist der detaillierte Inhalt vonAustausch von Quellcode-Kursunterlagen mit praktischen Videos zur ThinkPHP-Entwicklung großer Einkaufszentrum-Projekte. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!