yotaku的开发日志(一)
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;
权限表
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;
角色表
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>
数据模拟:
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 );
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');
3.流程说明
Index控制器内 获取用户的角色id,进而获得角色权限 进行判断是否展现数据 Index控制器--->left方法--->left.html模板 Index控制器
$mg_id = session('admin_id');
$manager_info = D('Manager')->find($mg_id); $role_id = $manager_info['mg_role_id'];
$role_info = D('Role')->find($role_id); $auth_ids = $role_info['role_auth_ids'];
$auth_infoA = D('Auth')->where("auth_level=0 and auth_id in($auth_ids)")->select();
$auth_infoB = D('Auth')->where("auth_level=1 and auth_id in($auth_ids)")->select();
$this->assign('auth_infoA',$auth_infoA); $this->assign('auth_infoB',$auth_infoB);
$this->assign('auth_info',$auth_info); $this->display();
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}
{foreach $auth_infoB as $k2=>$v2} {if $v2.auth_pid == $v.auth_id} {/if} {/foreach}
{$v.auth_id} style="display: none" cellspacing=0 cellpadding=0 width=150 border=0>
{$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}

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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

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 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()

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

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)

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

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