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

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

//(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
如何启用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 –下载文件夹后

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 Script Edition”;因为VBS较为简单可行性强,所以在打开VBS文件之前要确保VBS的安全性和渠道的可信性。

微软在 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

win11vbs怎么关闭win11vbs怎么关闭Jan 07, 2024 am 09:10 AM

win11默认会开启一个vbs系统保护功能,根据测试在关闭该功能之后能够提升接近30%的系统性能,因此非常适合游戏玩家关闭它,那么win11vbs怎么关闭呢。win11vbs怎么关闭1、首先我们点开底部“开始菜单”2、然后在上方搜索“Windowspowershell”并点击“以管理员身份运行”3、打开后输入“bcdedit/sethypervisorlaunchtypeoff”并回车运行。4、运行完成后,重启电脑就可以关闭vbs了。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

記事本++7.3.1

記事本++7.3.1

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

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具