目錄
yotaku的开发日志(1),yotaku开发日志
首頁 後端開發 php教程 yotaku的开发日志(1),yotaku开发日志_PHP教程

yotaku的开发日志(1),yotaku开发日志_PHP教程

Jul 12, 2016 am 09:03 AM
vbs

yotaku的开发日志(1),yotaku开发日志

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_idrole_namerole_auth_idsrole_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控制器

//(1)根据用户id获取本身记录信息
        $mg_id = session('admin_id');
        
登入後複製
//D('Manager')实例化了一个Manager的Model对象
        $manager_info = D('Manager')->find($mg_id);
        $role_id = $manager_info['mg_role_id'];
        
登入後複製
//(2)根据role_id 获得本身记录信息
        $role_info = D('Role')->find($role_id);
        $auth_ids = $role_info['role_auth_ids'];
        
登入後複製
//(3)根据$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}
    {$v.auth_id}>      {foreach $auth_infoB as $k2=>$v2}        {if $v2.auth_pid == $v.auth_id}                              {/if}      {/foreach}          
yotaku的开发日志(1),yotaku开发日志_PHP教程{$v2.auth_name}           
  {/foreach}  

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1081947.htmlTechArticleyotaku的开发日志(1),yotaku开发日志 2015-12-1821:17:46 连续看了几天的ThinkPHP框架,目前看到基于角色的用户访问权限控制。 相关代码如下: 数...
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何啟用Win11的VBS功能 如何啟用Win11的VBS功能 Dec 25, 2023 pm 02:09 PM

要是之前將vbs關閉之後想要開啟了,也是可以開啟的,我們可以使用命令代碼將其開啟,下面一起來看看如何開啟vbs吧,其實還是很簡單的。 win11vbs如何開啟:1、首先我們點選「開始功能表」。 2、然後點選「windows終端」。 3.接著輸入「bcdedit/sethypervisorlaunchtypeauto」。 4、然後重新啟動電腦,打開開始選單,在搜尋欄中搜尋「系統資訊」。 5.然後找打「基於虛擬化的安全性」是否開啟即可。

win11系統怎麼開啟vbs? win11重新開啟vbs的方法 win11系統怎麼開啟vbs? win11重新開啟vbs的方法 Jan 31, 2024 pm 11:24 PM

vbs是Virtual-BasedSecurity的縮寫,它是一種基於虛擬化的安全性功能。然而,在Windows11系統中,預設情況下是關閉的。對於需要使用這個功能的使用者來說,他們可能不知道如何啟用。幸運的是,我們可以透過Windows終端機(以管理員身份)來啟用它。為了方便廣大用戶,我們將在今天的Win11教學中分享詳細的步驟。如果你需要了解更多信息,請訪問我們的網站。 win11重新開啟vbs教學1、首先我們右鍵工作列左邊的開始功能表。 3.然後輸入bcdedit/sethypervisorlaun

Windows11 VBS教學:如何優雅地關閉應用程式? Windows11 VBS教學:如何優雅地關閉應用程式? Mar 08, 2024 am 11:54 AM

Windows11VBS教學:如何優雅地關閉應用程式?在日常使用Windows11作業系統時,我們經常會遇到需要同時關閉多個應用程式的情況。有時候我們可能會習慣性地點擊關閉按鈕,或是使用任務管理器來逐一結束應用程式進程。然而,使用VBS腳本(VisualBasicScript)可以更有效率地一次關閉多個應用程序,讓操作更加流暢和方便。 1.什麼是

Windows 腳本主機錯誤「系統找不到指定的檔案」修復 Windows 腳本主機錯誤「系統找不到指定的檔案」修復 Apr 13, 2023 pm 12:22 PM

Windows 腳本主機為使用者提供了執行腳本的環境。有些腳本會在您登入電腦後立即執行,其他一些腳本可能會在您觸發它們時執行。當您登入計算機,然後發現錯誤說「系統找不到指定的文件」錯誤時,本文將幫助您解決問題。好吧,此問題的原因可能有所不同,例如惡意軟體攻擊或安裝不當,或者某些檔案已被刪除等。在這裡,我們有不同的解決方案,您可以嘗試並解決問題,所以讓我們開始吧!方法 1 – 下載自動執行公用程式並檢查 vbs 條目步驟 1 –前往此網站,然後點擊右上角的下載圖示並儲存步驟 2 –下載資料夾後

微軟在 Windows 11 Dev 頻道測試 24H2 版本服務管道狀況,開啟 VBS 後將收到 26080.1400 更新 微軟在 Windows 11 Dev 頻道測試 24H2 版本服務管道狀況,開啟 VBS 後將收到 26080.1400 更新 Mar 19, 2024 pm 01:25 PM

微軟今日在DevChannel推送了兩項服務更新,旨在測試Win1124H2版本的服務管道。這些更新並未包含任何新內容,僅為了評估系統功能和穩定性。根據官方說明,大部分在Dev頻道的使用者將會收到26080.1300累積更新(KB5037139),但是如果啟用了基於虛擬化的安全性(VBS)功能,則會收到Build26080.1400(KB5037140)。微軟強調,即使Arm64設備啟用了VBS,也只會收到KB5037139更新。 IT之家註:基於虛擬化的安全功能(VBS)使用硬體虛擬化和Windo

vbs整人程式碼怎麼用 vbs整人程式碼怎麼用 Nov 22, 2023 am 10:05 AM

首先需要明確使用惡作劇或整人代碼可能會對他人造成不必要的困擾或傷害。在編寫和實施任何形式的整人程式碼之前,建議三思而後行,這種行為是不負責任和不道德的。 vbs整人程式碼使用方法:1、了解目標:編寫程式碼前,需要了解要整的目標;2、確定目標:確定想要透過腳本實現什麼效果;3、編寫程式碼:使用VBScript編寫腳本;4、測試程式碼:先在安全的環境下測試它;5、實作:測試沒問題即可實作。

vbs是什麼文件 vbs是什麼文件 Feb 19, 2021 pm 02:43 PM

vbs是基於Visual Basic的腳本語言,VBS的全名為「Microsoft Visual Basic Sc​​ript Edition」;因為VBS較為簡單可行性強,所以在開啟VBS檔案之前要確保VBS的安全性和管道的可信任性。

如何關閉Win11中的vbs腳本 如何關閉Win11中的vbs腳本 Jan 02, 2024 pm 11:23 PM

vbs是win11預設開啟的功能,這項功能開啟之後會降低我們電腦30%左右的效能,我們只有將其關閉才可以獲得更好的遊戲體驗感,那麼應該如何關閉呢,一起來看看吧。 win11vbs如何關閉:1、先點選「開始」選單。 2、接著在上方搜尋「windowspowershell」然後以管理員身分執行。 3.打開之後輸入「bcdedit/sethypervisorlaunchtypeoff」並按下回車。 4.最後運轉完成重啟就可以關閉了。

See all articles