Heim Backend-Entwicklung PHP-Tutorial yotaku的开发日志(一)

yotaku的开发日志(一)

Jun 13, 2016 pm 12:28 PM
auth insert role

yotaku的开发日志(1)

2015-12-18 21:17:46

连续看了几天的ThinkPHP框架,目前看到基于角色的用户访问权限控制。

 相关代码如下:

数据库

用户表(管理员)

 

mg_id mg_name mg_pwd mg_time mg_role_id
0 creatint 123 2587413547 1
1 yotaku 123 258744984 4
CREAATE TABLE `sw_manager` (    `mg_id` int(11) NOT NULL AUTO_INCREMENT,    `mg_name` varchar(32) NOT NULL,    `mg_pwd` varchar(32) NOT NULL,     `mg_time` int(10) unsigned NOT NULL COMMENT '时间',    `mg_role_id` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '角色id',    PRIMARY KEY (`mg_id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
Nach dem Login kopieren

权限表

auth_id(权限ID) auth_name(权限名称) auth_pid(父id) auth_c(控制器) auth_a(操作方法) auth_path(全路径) auth_level(权限级别)
100 产品中心 0 '' '' 100 0
101 产品展示 100 ManagerController show 100-101 1
CREATE TABLE `sw_auth` (    `auth_id` smallint(6) unsigned NOT NULL AUTO_INCREMENT,    `auth_name` varchar(20) NOT NULL COMMENT '权限名称',    `auth_pid` smallint(6) unsigned NOT NULL COMMENT'父id',    `auth_c` varchar(32) NOT NULL DEFAULT '' COMMENT '控制器',    `auth_a` varchar(32) NOT NULL DEFAULT '' COMMENT '操作方法',    `auth_path` varchar(32) NOT NULL COMMENT '全路径',    `auth_level` tinyint(4) NOT NULL DEFAULT '0' COMMENT '级别',    PRIMARY KEY(`auth_id`)) ENGING-InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
Nach dem Login kopieren

角色表

role_id role_name role_auth_ids role_auth_ac
0 站主 1,3,9 操作器-控制器,操作器-控制器,...
1 高级管理员 1,2,3,9,12 操作器-控制器,操作器-控制器,...
CREATE TABLE `sw_role` (    `role_id` smallint(6) unsigned NOT NULL AUTO_INCREMENT,    `role_name` varchar(20) NOT NULL COMMENT '角色名称',    `role_auth_ids` varchar(128) NOT NULL DEFAULT '' COMMENT '权限id,1,3,..',    `role_auth_ac` text COMMENT '控制器2-操作3,控制器1-操作6,...',    PRIMARY KEY(`role_id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;<br><br>
Nach dem Login kopieren

 


数据模拟

1.权限数据

  产品中心(产品展示,最新产品,分类管理,子类管理) 高级管理(用户留言,留言簿,产品订购,文件管理) 系统管理(基本设置,样式管理,首页设置,管理员列表)

<span class="zhushi">顶级权限</span>insert into sw_auth values ( 100,'产品中心',0,'','',100,0 );insert into sw_auth values ( 101,'高级管理',0,'','',101,0 );insert into sw_auth values ( 102,'系统管理',0,'','',102,0 );insert into sw_auth values ( 103,'权限管理',0,'','',103,0 );<span class="zhushi">次级权限</span>insert into sw_auth values ( 104,'产品展示',100,'Goods','show','100-104',1 );insert into sw_auth values ( 105,'最新产品',100,'Goods','showlist','100-105',1 );insert into sw_auth values ( 106,'分类管理',100,'Goods','cate','100-106',1 );insert into sw_auth values ( 107,'用户留言',101,'Goods','words','101-107',1 );insert into sw_auth values ( 108,'留言簿',  101,'Goods','wordsbook','101-108',1 );insert into sw_auth values ( 109,'基本设置',102,'Goods','set','102-109',1 );insert into sw_auth values ( 110,'样式管理',102,'Goods','css','102-110',1 );insert into sw_auth values ( 111,'用户列表',103,'Goods','userlist','103-111',1 );insert into sw_auth values ( 112,'角色管理',103,'Goods','role','103-112',1 );insert into sw_auth values ( 113,'权限列表',103,'Goods','auth','103-113',1 );
Nach dem Login kopieren

2.角色数据

  sw_role 站主 所有权限(103,104,105,106,107,108,109) 管理员 部分权限(104,105,109) 版主 部分权限(103,108)

<span class="zhushi">角色</span>insert into sw_role values (10,'站主','100,101,102,103,104,105,106,107,108,109,110,111,112,113','Goods-show,Goods-showlist,Goods-cate,Goods-words,Goods-wordsbook,Goods-set,Goods-css');insert into sw_role values (11,'管理员','100,102,104,105,109','Goods-showlist,Goods-cate,Goods-css');insert into sw_role values (12,'版主','100,101,103,106,108,113','Goods-show,Goods-set');
Nach dem Login kopieren

3.流程说明

  Index控制器内 获取用户的角色id,进而获得角色权限 进行判断是否展现数据 Index控制器--->left方法--->left.html模板 Index控制器

//(1)根据用户id获取本身记录信息
        $mg_id = session('admin_id');        
Nach dem Login kopieren
//D('Manager')实例化了一个Manager的Model对象
        $manager_info = D('Manager')->find($mg_id);        $role_id = $manager_info['mg_role_id'];        
Nach dem Login kopieren
//(2)根据role_id 获得本身记录信息
        $role_info = D('Role')->find($role_id);        $auth_ids = $role_info['role_auth_ids'];        
Nach dem Login kopieren
//(3)根据$auth_ids 获得具体权限
        $auth_infoA = D('Auth')->where("auth_level=0 and auth_id in($auth_ids)")->select();
Nach dem Login kopieren
//父级
        $auth_infoB = D('Auth')->where("auth_level=1 and auth_id in($auth_ids)")->select();
Nach dem Login kopieren
//子级
        $this->assign('auth_infoA',$auth_infoA);        $this->assign('auth_infoB',$auth_infoB);        
Nach dem Login kopieren
//传到模板中
        $this->assign('auth_info',$auth_info);        $this->display();
Nach dem Login kopieren

4.模板 left.html

  {foreach $auth_infoA as $k=>$v}

    

    

      background={$smarty.const.ADMIN_IMG_URL}/menu_bt.jpg >{$v.auth_id})

      href="javascript:void(0);">{$v.auth_name}

    

{$v.auth_id} style="display: none" cellspacing=0 cellpadding=0 width=150 border=0>

      {foreach $auth_infoB as $k2=>$v2}

        {if $v2.auth_pid == $v.auth_id}

          

          

         {/if}

      {/foreach}

      

    

yotaku的开发日志(一){$smarty.const.ADMIN_IMG_URL}/menu_icon.gif" width=9> {$smarty.const.__MODULE__}/{$v2.auth_c}/{$v2.auth_a}" target=right>{$v2.auth_name}

          

  {/foreach}

 

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

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

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)

Was ist der Unterschied zwischen Einfügen, Ignorieren, Einfügen und Ersetzen in MySQL? Was ist der Unterschied zwischen Einfügen, Ignorieren, Einfügen und Ersetzen in MySQL? May 29, 2023 pm 04:40 PM

Der Unterschied zwischen insertignore-, insert- und replacement-Anweisungen ist bereits vorhanden oder nicht. ;replace Ersetzen und einfügen replacementintonames(name,age)values("Xiao Ming", 25); Tabellenanforderungen: PrimaryKey oder eindeutiges Indexergebnis: Die Tabellen-ID wird automatisch erhöht. Testcode erstellt Tabelle

Verwendung von Auth0 zur Authentifizierung in der Java-API-Entwicklung Verwendung von Auth0 zur Authentifizierung in der Java-API-Entwicklung Jun 18, 2023 pm 05:30 PM

In der modernen Softwareentwicklung ist die Identitätsauthentifizierung eine sehr wichtige Sicherheitsmaßnahme. Auth0 ist ein Unternehmen, das Identitätsauthentifizierungsdienste anbietet. Es kann Entwicklern dabei helfen, schnell mehrere Identitätsauthentifizierungsmethoden (einschließlich OAuth2, OpenIDConnect usw.) zu implementieren und sichere und zuverlässige Authentifizierungsdienste bereitzustellen. In diesem Artikel stellen wir vor, wie man Auth0 zur Authentifizierung in der JavaAPI-Entwicklung verwendet. Schritt 1: Erstellen Sie ein Auth0-Konto und registrieren Sie die Anwendung. Zuerst müssen wir dies tun

Verwenden Sie die StringBuilder.insert()-Funktion von Java, um eine Zeichenfolge an der angegebenen Position einzufügen Verwenden Sie die StringBuilder.insert()-Funktion von Java, um eine Zeichenfolge an der angegebenen Position einzufügen Jul 24, 2023 pm 09:37 PM

Verwenden Sie die Funktion StringBuilder.insert(), um eine Zeichenfolge an einer bestimmten Position einzufügen. StringBuilder ist eine Klasse zur Verarbeitung variabler Zeichenfolgen in Java. Sie bietet verschiedene Methoden zum Betreiben von Zeichenfolgen Angegebene Positionen Eine der gebräuchlichsten Methoden zum positionellen Einfügen von Zeichenfolgen. In diesem Artikel stellen wir vor, wie man mit der Funktion insert() einen String an einer bestimmten Position einfügt, und geben entsprechende Codebeispiele. einfügen()

Wie füge ich Tabellenzeilen in jQuery hinzu, bearbeite und lösche sie? Wie füge ich Tabellenzeilen in jQuery hinzu, bearbeite und lösche sie? Sep 05, 2023 pm 09:49 PM

Im heutigen Zeitalter der Webentwicklung ist eine effektive und effiziente Tabellenverwaltung sehr wichtig geworden, insbesondere beim Umgang mit datenintensiven Webanwendungen. Die Möglichkeit, Zeilen dynamisch einer Tabelle hinzuzufügen, zu bearbeiten und zu löschen, kann das Benutzererlebnis erheblich verbessern und Anwendungen interaktiver machen. Eine effektive Möglichkeit, dies zu erreichen, besteht darin, die Leistungsfähigkeit von jQuery zu nutzen. jQuery bietet viele Funktionen, die Entwicklern bei der Durchführung von Vorgängen helfen. Tabellenzeilen Eine Tabellenzeile ist eine Sammlung miteinander verbundener Daten, die durch Elemente in HTML dargestellt werden. Es wird verwendet, um Zellen (dargestellt durch Elemente) in einer Tabelle zu gruppieren. Jedes Element wird zum Definieren einer Zeile in der Tabelle verwendet und enthält bei Tabellen mit mehreren Attributen normalerweise ein oder mehrere Elemente. Syntax$(selector).append(co

So verwenden Sie die Supabase Auth-Methode in Vue3 So verwenden Sie die Supabase Auth-Methode in Vue3 May 28, 2023 am 08:39 AM

Einleitung Supabase ist eine selbsternannte „Open-Source-Firebase-Alternative“. Ich interessiere mich schon seit einiger Zeit für die Zusammenarbeit mit Supbase und dachte, ich würde versuchen, deren Authentifizierungs-API zu verwenden, um die Authentifizierung für eine Vue.js3-Anwendung einzurichten. Zunächst einmal: Warum sollten Sie SupabaseAuth verwenden? Das Fazit ist, dass SupabaseAuth die einzige Möglichkeit ist, den Zugriff auf diese Daten zu verwalten, wenn Sie Supabase als Datenspeicher verwenden (was einige ziemlich nette Vorteile hat). Zweitens, obwohl SupabaseAuth auch viele verschiedene Funktionen hat. Benutzerberechtigungen ohne Middleware (Sicherheit auf Zeilenebene über Postgres)

Implementierung der PHP-Sicherheitsauthentifizierung mit Auth0 Implementierung der PHP-Sicherheitsauthentifizierung mit Auth0 Jul 25, 2023 pm 02:09 PM

Verwendung von Auth0 zur Implementierung der PHP-Sicherheitsüberprüfung Einführung: In der modernen Webentwicklung ist die Sicherheitsüberprüfung ein entscheidender Bestandteil. Um die Privatsphäre und Datensicherheit der Benutzer zu schützen, müssen wir Maßnahmen ergreifen, um sicherzustellen, dass nur autorisierte Benutzer auf vertrauliche Informationen zugreifen oder bestimmte Vorgänge ausführen können. Auth0 ist eine beliebte Authentifizierungs- und Autorisierungsplattform, die einfache und leistungsstarke Lösungen bietet, die uns bei der sicheren Verifizierung helfen. In diesem Artikel wird erläutert, wie Sie mit Auth0 die PHP-Sicherheitsüberprüfung implementieren und Code bereitstellen

insert-Anweisung insert-Anweisung Sep 15, 2023 pm 01:30 PM

Die grundlegende Syntax der Einfügeanweisung lautet „INSERT INTO Tabellenname (Spalte 1, Spalte 2, Spalte 3, ...), VALUES (Wert 1, Wert 2, Wert 3, ...);“, „Tabellenname“ einzufügender Name der Datentabelle. „Spalte 1“, „Spalte 2“, „Spalte 3“ usw. sind die Namen der Spalten in der Tabelle, in die Daten eingefügt werden sollen. Wert 2“, „Wert 3“ usw. sind die Namen der einzufügenden Spalten. Datenwert.

Verwenden Sie die Methode insert() der StringBuilder-Klasse in Java, um eine Zeichenfolge an einer angegebenen Stelle einzufügen Verwenden Sie die Methode insert() der StringBuilder-Klasse in Java, um eine Zeichenfolge an einer angegebenen Stelle einzufügen Jul 25, 2023 pm 05:18 PM

Verwenden Sie in Java die Methode insert() der Klasse StringBuilder, um eine Zeichenfolge an einer bestimmten Stelle einzufügen. Wenn Sie in Java eine vorhandene Zeichenfolge einfügen müssen, können Sie die Methode insert() der Klasse StringBuilder verwenden. StringBuilder ist eine variable Zeichenfolge, die eine Reihe von Methoden zum Ändern und Bearbeiten von Zeichenfolgen bereitstellt. Mit der Methode insert() können Sie somit an einer bestimmten Position einen String in den Originalstring einfügen

See all articles