首页 后端开发 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;
登录后复制

权限表

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

 

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系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脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

mysql中insert ignore、insert和replace的区别是什么 mysql中insert ignore、insert和replace的区别是什么 May 29, 2023 pm 04:40 PM

insertignore、insert和replace的区别指令已存在不存在举例insert报错插入insertintonames(name,age)values(“小明”,23);insertignore忽略插入insertignoreintonames(name,age)values(“小明”,24);replace替换插入replaceintonames(name,age)values(“小明”,25);表要求:有PrimaryKey,或者unique索引结果:表id都会自增测试代码创建表

Java API 开发中使用 Auth0 进行身份认证 Java API 开发中使用 Auth0 进行身份认证 Jun 18, 2023 pm 05:30 PM

在现代软件开发中,身份认证是一项非常重要的安全措施。Auth0是一家提供身份认证服务的公司,它可以帮助开发者快速实现多种身份认证方式(包括OAuth2、OpenIDConnect等),并提供安全可靠的认证服务。在本文中,我们将介绍如何在JavaAPI开发中使用Auth0进行身份认证。第一步:创建Auth0账号并注册应用首先,我们需要在

使用java的StringBuilder.insert()函数在指定位置插入字符串 使用java的StringBuilder.insert()函数在指定位置插入字符串 Jul 24, 2023 pm 09:37 PM

使用java的StringBuilder.insert()函数在指定位置插入字符串StringBuilder是Java中用于处理可变字符串的类,它提供了多种方法来操作字符串,其中insert()函数是用于在指定位置插入字符串的常用方法之一。在本文中,我们将介绍如何使用insert()函数来实现在指定位置插入字符串的功能,并给出相应的代码示例。insert()

如何在jQuery中添加、编辑和删除表格行? 如何在jQuery中添加、编辑和删除表格行? Sep 05, 2023 pm 09:49 PM

在当今的Web开发时代,有效且高效的表管理变得非常重要,特别是在处理数据量大的Web应用程序时。从表中动态添加、编辑和删除行的能力可以显着增强用户体验并使应用程序更具交互性。实现这一目标的一种有效方法是利用jQuery的强大功能。jQuery提供了许多功能来帮助开发人员执行操作。表格行表格行是相互关联的数据的集合,由HTML中的元素表示。它用于将表格中的单元格(由元素表示)分组在一起。每个元素用于定义表中的一行,对于多属性表,通常包含一个或多个元素。语法$(selector).append(co

Vue3中如何使用Supabase Auth方法 Vue3中如何使用Supabase Auth方法 May 28, 2023 am 08:39 AM

引言Supabase是一个自称的"开源Firebase替代品"。我对与Supbase合作已经有一段时间了,我想我将尝试使用他们的认证API来为Vue.js3应用程序进行认证设置。首先,你为什么要使用SupabaseAuth?最重要的是,如果你使用Supabase作为你的数据存储,(它有一些非常甜蜜的好处),SupabaseAuth是你可以管理对这些数据的访问的唯一方法。其次,虽然SupabaseAuth也有许多不同的功能。没有中间件的用户权限(通过Postgres的行级安全)

使用 Auth0 实现 PHP 安全验证 使用 Auth0 实现 PHP 安全验证 Jul 25, 2023 pm 02:09 PM

使用Auth0实现PHP安全验证引言:在现代的Web开发中,安全验证是至关重要的一部分。为了保护用户的隐私和数据安全,我们需要采取措施确保只有授权用户才能访问敏感信息或执行特定操作。Auth0是一个流行的身份验证和授权平台,它提供了简单且强大的解决方案来帮助我们实现安全验证。本文将介绍如何使用Auth0实现PHP的安全验证,并提供代码

insert语句 insert语句 Sep 15, 2023 pm 01:30 PM

insert语句的基本语法“INSERT INTO 表名 (列 1, 列 2, 列 3, ...),VALUES (值 1, 值 2, 值 3, ...);”,“表名”是要插入数据的表的名称,“列 1”、“列 2”、“列 3”等是表中要插入数据的列的名称,“值 1”、“值 2”、“值 3”等是要插入的数据值。

Java中使用StringBuilder类的insert()方法将字符串插入到指定位置 Java中使用StringBuilder类的insert()方法将字符串插入到指定位置 Jul 25, 2023 pm 05:18 PM

Java中使用StringBuilder类的insert()方法将字符串插入到指定位置在Java中,如果需要对已有的字符串进行插入操作,可以使用StringBuilder类的insert()方法。StringBuilder是可变的字符序列,它提供了一系列的方法来对字符串进行修改和操作。使用insert()方法,可以在指定位置将字符串插入到原有的字符串中,从而

See all articles