Rumah pembangunan bahagian belakang tutorial php 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;
Salin selepas log masuk

权限表

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;
Salin selepas log masuk

角色表

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>
Salin selepas log masuk

 


数据模拟

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 );
Salin selepas log masuk

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');
Salin selepas log masuk

3.流程说明

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

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

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}

 

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah perbezaan antara insert ignore, insert dan replace dalam mysql Apakah perbezaan antara insert ignore, insert dan replace dalam mysql May 29, 2023 pm 04:40 PM

Perbezaan antara arahan insertignore, masukkan dan ganti sudah wujud atau tidak Contoh ralat sisipan (nama,umur)nilai("Xiaoming",23);insertignore mengabaikan nilai insertignoreintonames("Xiaoming",24) ;ganti Ganti dan masukkan nilai gantiintonames(nama,umur)("Xiao Ming", 25); Keperluan jadual: PrimaryKey, atau hasil indeks unik: id jadual akan ditambah secara automatik

Menggunakan Auth0 untuk pengesahan dalam pembangunan API Java Menggunakan Auth0 untuk pengesahan dalam pembangunan API Java Jun 18, 2023 pm 05:30 PM

Dalam pembangunan perisian moden, pengesahan identiti adalah langkah keselamatan yang sangat penting. Auth0 ialah syarikat yang menyediakan perkhidmatan pengesahan identiti. Ia boleh membantu pembangun melaksanakan pelbagai kaedah pengesahan identiti dengan cepat (termasuk OAuth2, OpenIDConnect, dll.) dan menyediakan perkhidmatan pengesahan yang selamat dan boleh dipercayai. Dalam artikel ini, kami akan memperkenalkan cara menggunakan Auth0 untuk pengesahan dalam pembangunan JavaAPI. Langkah 1: Cipta akaun Auth0 dan daftarkan permohonan Pertama, kita perlu

Gunakan fungsi StringBuilder.insert() java untuk memasukkan rentetan pada kedudukan yang ditentukan Gunakan fungsi StringBuilder.insert() java untuk memasukkan rentetan pada kedudukan yang ditentukan Jul 24, 2023 pm 09:37 PM

Gunakan fungsi StringBuilder.insert() java untuk memasukkan rentetan pada kedudukan tertentu StringBuilder ialah kelas dalam Java yang digunakan untuk mengendalikan rentetan pembolehubah. Fungsi insert() digunakan untuk Salah satu kaedah biasa memasukkan rentetan secara kedudukan. Dalam artikel ini, kami akan memperkenalkan cara menggunakan fungsi insert() untuk memasukkan rentetan pada kedudukan tertentu dan memberikan contoh kod yang sepadan. masukkan()

Bagaimana untuk menambah, mengedit dan memadam baris jadual dalam jQuery? Bagaimana untuk menambah, mengedit dan memadam baris jadual dalam jQuery? Sep 05, 2023 pm 09:49 PM

Dalam era pembangunan web hari ini, pengurusan jadual yang berkesan dan cekap telah menjadi sangat penting, terutamanya apabila berurusan dengan aplikasi web berat data. Keupayaan untuk menambah, mengedit dan memadam baris secara dinamik daripada jadual boleh meningkatkan pengalaman pengguna dengan ketara dan menjadikan aplikasi lebih interaktif. Cara yang berkesan untuk mencapai ini adalah dengan memanfaatkan kuasa jQuery. jQuery menyediakan banyak ciri untuk membantu pembangun melaksanakan operasi. Baris jadual Baris jadual ialah koleksi data yang saling berkaitan, diwakili oleh elemen dalam HTML. Ia digunakan untuk mengumpulkan sel (diwakili oleh unsur) dalam jadual. Setiap elemen digunakan untuk menentukan baris dalam jadual, dan untuk jadual berbilang atribut, ia biasanya mengandungi satu atau lebih elemen. Syntax$(selector).append(co

Cara menggunakan kaedah Supabase Auth dalam Vue3 Cara menggunakan kaedah Supabase Auth dalam Vue3 May 28, 2023 am 08:39 AM

Pengenalan Supabase ialah "alternatif Firebase sumber terbuka" yang diisytiharkan sendiri. Saya telah berminat untuk bekerja dengan Supbase buat sementara waktu dan fikir saya akan cuba menggunakan API pengesahan mereka untuk menyediakan pengesahan untuk aplikasi Vue.js3. Pertama sekali, mengapa anda perlu menggunakan SupabaseAuth? Intinya ialah jika anda menggunakan Supabase sebagai stor data anda, (yang mempunyai beberapa faedah yang cukup manis), SupabaseAuth ialah satu-satunya cara anda boleh mengurus akses kepada data tersebut. Kedua, walaupun SupabaseAuth juga mempunyai banyak fungsi yang berbeza. Kebenaran pengguna tanpa middleware (keselamatan peringkat baris melalui Postgres)

Melaksanakan pengesahan keselamatan PHP menggunakan Auth0 Melaksanakan pengesahan keselamatan PHP menggunakan Auth0 Jul 25, 2023 pm 02:09 PM

Menggunakan Auth0 untuk melaksanakan pengesahan keselamatan PHP Pengenalan: Dalam pembangunan web moden, pengesahan keselamatan adalah bahagian yang penting. Untuk melindungi privasi dan keselamatan data pengguna, kami perlu mengambil langkah untuk memastikan bahawa hanya pengguna yang diberi kuasa boleh mengakses maklumat sensitif atau melakukan operasi tertentu. Auth0 ialah platform pengesahan dan kebenaran popular yang menyediakan penyelesaian mudah dan berkuasa untuk membantu kami mencapai pengesahan selamat. Artikel ini akan memperkenalkan cara menggunakan Auth0 untuk melaksanakan pengesahan keselamatan PHP dan menyediakan kod

sisipkan kenyataan sisipkan kenyataan Sep 15, 2023 pm 01:30 PM

Sintaks asas pernyataan sisipan ialah "MASUKKAN KE DALAM nama jadual (lajur 1, lajur 2, lajur 3, ...), NILAI (nilai 1, nilai 2, nilai 3, ...);", "nama jadual" akan disisipkan Nama jadual data "Lajur 1", "Lajur 2", "Lajur 3", dll. ialah nama lajur dalam jadual di mana data hendak disisipkan. "Nilai 2", "Nilai 3", dsb. ialah nama lajur yang akan disisipkan.

Gunakan kaedah insert() kelas StringBuilder dalam Java untuk memasukkan rentetan ke lokasi yang ditentukan Gunakan kaedah insert() kelas StringBuilder dalam Java untuk memasukkan rentetan ke lokasi yang ditentukan Jul 25, 2023 pm 05:18 PM

Di Java, gunakan kaedah insert() kelas StringBuilder untuk memasukkan rentetan ke lokasi yang ditentukan Di Java, jika anda perlu memasukkan rentetan sedia ada, anda boleh menggunakan kaedah insert() kelas StringBuilder. StringBuilder ialah jujukan aksara pembolehubah yang menyediakan satu siri kaedah untuk mengubah suai dan mengendalikan rentetan. Dengan menggunakan kaedah insert(), anda boleh memasukkan rentetan ke dalam rentetan asal pada kedudukan yang ditentukan, oleh itu

See all articles