Heim  >  Artikel  >  PHP-Framework  >  Detaillierte Einführung in die Berechtigungseinstellungsmethode des ThinkPHP-Projektteams

Detaillierte Einführung in die Berechtigungseinstellungsmethode des ThinkPHP-Projektteams

PHPz
PHPzOriginal
2023-04-11 09:15:56847Durchsuche

ThinkPHP ist ein hervorragendes PHP-Framework, das im Bereich der Webentwicklung weit verbreitet ist. Im Projektimplementierungsprozess ist die Berechtigungseinstellung ein entscheidendes Glied. In diesem Artikel wird die Berechtigungseinstellungsmethode des ThinkPHP-Projektteams ausführlich vorgestellt.

1. ThinkPHP-Berechtigungseinstellungen verstehen

Die Berechtigungseinstellung bezieht sich auf die Zuweisung von Betriebsberechtigungen an Benutzer, damit diese entsprechend dem Berechtigungsbereich arbeiten können. Im ThinkPHP-Framework können Berechtigungseinstellungen über RBAC (Role-Based Access Control) implementiert werden. Die rollenbasierte RBAC-Zugriffskontrolle bezieht sich auf ein Zugriffskontrollmodell, das Benutzern Rollen zuweist und den Rollen Berechtigungen neu zuweist. RBAC weist die folgenden Merkmale auf:

  1. Autorisieren Sie Berechtigungen für Rollen und weisen Sie Benutzern dann Rollen zu, um die Verwaltung zu erleichtern.
  2. Benutzer müssen nur Rollen haben, um Rollen zu haben . Alle Berechtigungen vorhanden;
  3. Das System ist einfach zu erweitern und zu warten und verfügt über eine gute Skalierbarkeit; Zugangssicherheit.
  4. 2. Schritte zur RBAC-basierten Berechtigungseinstellung

Schritt 1 Erstellen Sie eine Berechtigungstabelle

Erstellen Sie eine Berechtigungstabelle in der Datenbank Eine Berechtigungstabelle, einschließlich der Felder „ID“, „Name“, „Titel“ und „Status“;
  1. Die Felder „ID“ und „Name“ sind der Primärschlüssel und die Berechtigungskennung; ist der Berechtigungsname;
  2. Das Statusfeld ist der Berechtigungsstatus, 1 bedeutet aktiviert, 0 bedeutet deaktiviert.
  3. Schritt 2 Erstellen Sie eine Rollentabelle
Erstellen Sie eine Rollentabelle in der Datenbank, einschließlich der Felder ID, Name, Titel und Status #; 🎜 🎜#

Die Felder „ID“ und „Name“ sind Primärschlüssel und Rollenbezeichner;

    Feld „Titel“ ist der Rollenname; steht für aktiviert, 0 steht für deaktiviert.
  1. Schritt 3 Erstellen Sie eine Benutzertabelle
  2. Erstellen Sie eine Benutzertabelle in der Datenbank, einschließlich der Felder ID, Benutzername, Passwort und Status #; 🎜 🎜#
  3. ID-Feld ist der Primärschlüssel;
Benutzername ist der Benutzername;

Passwort ist das Passwort; Der Benutzerstatus, 1 bedeutet aktiviert, 0 bedeutet deaktiviert.
  1. Schritt 4 Erstellen Sie eine Benutzerrollenzuordnungstabelle
  2. Erstellen Sie eine Benutzerrollenzuordnungstabelle in der Datenbank, einschließlich der Felder user_id und role_id; 🎜 🎜#
  3. user_id ist die Benutzer-ID;
  4. role_id ist die Rollen-ID.
Schritt 5 Erstellen Sie eine Rollenberechtigungszuordnungstabelle.

    Erstellen Sie eine Rollenberechtigungszuordnungstabelle in der Datenbank, einschließlich der Felder „role_id“ und „rule_id“. 🎜 🎜#
  1. role_id ist die Rollen-ID;
  2. rule_id ist die Berechtigungs-ID.
  3. Schritt 6 Berechtigungskontrolle implementieren

Im ThinkPHP-Projekt ist die Methode zum Implementieren der Berechtigungskontrolle wie folgt:

    #🎜 🎜#In Definieren Sie einen öffentlichen Controller CommonController, der die Berechtigungskontrolle für alle Benutzer implementieren kann.
  1. Erstellen Sie die Auth-Klasse, um die Berechtigungsüberprüfung durchzuführen die CommonController-Klasse, wie unten gezeigt:
  2. public function _initialize(){
        if(!authcheck()){
    
            }
        }
    
    public function authcheck(){
        $auth=new Auth;
        if($auth->check(MODULE_NAME.'/'.CONTROLLER_NAME.'/'.ACTION_NAME,session('uid'))){
            return true;
        }else{
            return false;
        }
    }
  3. In der Auth-Klasse ist die Logik der Berechtigungsüberprüfung implementiert, wie unten gezeigt:

class Auth {
    //检查权限
    public function check($name, $uid){
        if(in_array($uid, C('AUTH_SUPER_ADMIN'))){
            return true;
        }
        $infos=M('user')->field('role_id')->where('id='.$uid)->find();
        $role_id=$infos['role_id'];
        $rules=M('access')->where('role_id='.$role_id)->select();
        foreach($rules as $v){
            $rule_ids[]=$v['rule_id'];
        }
        $rules=M('rule')->where('id in ('.implode(',',$rule_ids).')')->select();
        foreach($rules as $r){
            $urls[]=$r['name'];
        }
        if(in_array($name,$urls)){
            return true;
        }else{
            return false;
        }
    }
}
#🎜🎜 #Die durch den obigen Code implementierte Logik besteht darin, eine Berechtigungsüberprüfung für alle Benutzeroperationsanforderungen hinzuzufügen. Wenn für den vom Benutzer angeforderten Vorgang eine Berechtigungskontrolle erforderlich ist, prüft der Validator zunächst, ob der Benutzer ein Superadministrator ist. Wenn der Benutzer ein Superadministrator ist, wird der Test direkt bestanden; wenn der Benutzer kein Superadministrator ist, wird die Liste der Berechtigungs-IDs, die der Rolle gehören, basierend auf der Rollen-ID des Benutzers (abgefragt von) gefunden (abgefragt von). die Benutzertabelle) und durchsuchen Sie dann die entsprechende Berechtigungsnamenliste basierend auf der Berechtigungs-ID-Liste. Wenn sich der angeforderte Vorgangsname in der Berechtigungsnamenliste befindet, ist die Überprüfung erfolgreich. Andernfalls schlägt die Berechtigungsüberprüfung fehl.

3. Zusammenfassung

    Die Berechtigungseinstellung ist ein unverzichtbarer Bestandteil der Website-Entwicklung. In diesem Artikel wird detailliert beschrieben, wie Sie die Berechtigungskontrolle basierend auf RBAC im ThinkPHP-Projekt implementieren. Basierend auf dieser Idee können Sie entsprechende Betriebsberechtigungen basierend auf Ihren tatsächlichen Projektanforderungen festlegen.

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die Berechtigungseinstellungsmethode des ThinkPHP-Projektteams. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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