权限管理:(RBAC)
一般做正规的权限管理程序基本就是以下M表模式:
例1:在页面显示管理者的权限,并可以修改的管理界面
数据库表如下:
管理界面(附ajax):
<body> <?php include("../fzl/czy.class.php"); $db = new czy(); ?> <div>请选择用户: <select id="sel"> <?php $sql = "select * from users"; $attr = $db->Query($sql); foreach($attr as $v) { echo "<option value='{$v[0]}'>{$v[2]}<option>"; } $fuid = $attr[0][0];//页面显示第一个人的用户名 ?> </select> </div> <br /> <div> 请选择角色:<br /><br /> <?php $sjuese = "select * from juese"; $ajuese = $db->Query($sjuese); foreach($ajuese as $v) { $sxz = "select count(*) from userinjuese where userid='{$fuid}' and jueseid = '{$v[0]}'"; $n = $db->strQuery($sxz); if($n>0) { echo "<input type='checkbox' checked='checked' class='juese' value='{$v[0]}' />{$v[1]} "; } else { echo "<input type='checkbox' class='juese' value='{$v[0]}' />{$v[1]} "; } } ?><br /><br /> <input type="button" value="保存" id="btn" /> </div> </body> <script type="text/javascript"> //ajax功能:点击下拉选项,相对应的它的功能显示在checkbox中 $("#sel").change(function(){ var uid = $("#sel").val(); $.ajax({ url:"chuli.php", data:{uid:uid}, type:"POST", dataType:"TEXT", success: function(data) { var js = data.split("|"); //先把选中状态都清除掉 var ck = $(".juese"); ck.prop("checked",false); //清完后让处理页面返回的角色代号显示选中在checkbox中 for(var i=0;i<ck.length;i++) { if(js.indexOf(ck.eq(i).val())>-1) { ck.eq(i).prop("checked",true); } } } }); }) //ajax功能:选中uid的功能,点击保存,通过数据库的先删除后添加,返回的值再显示在checkbox中 $("#btn").click(function(){ //用户名 var uid = $("#sel").val(); //每个角色代号用"|"分割 var ck = $(".juese"); var str =""; for(var i=0;i<ck.length;i++) { if(ck.eq(i).prop("checked")) { str+=ck.eq(i).val()+"|"; } } //截取最后一个"|" str = str.substr(0,str.length-1); $.ajax({ url:"add.php", data:{uid:uid,juese:str}, type:"POST", dataType:"TEXT", success: function(data) { alert("保存成功"); } }); }) </script>
显示功能处理界面:
<?php include("../fzl/czy.class.php"); $db = new czy(); $uid = $_POST["uid"]; $sql = "select jueseid from userinjuese where userid='{$uid}'"; echo $db->strQuery($sql);
先删除后添加checkbox的处理界面:
<?php include("../fzl/czy.class.php"); $db = new czy(); $uid = $_POST["uid"]; $juese = $_POST["juese"]; //根据传过来的字符串,根据“|”拆分到数组中 $attr = explode("|",$juese); //根据$uid删除userinjuese表中所有用户的角色信息 $sdel = "delete from userinjuese where userid='{$uid}'"; $db->Query($sdel,0); //再将取到的角色信息添加到userinjuese表中 foreach($attr as $v) { $sql = "insert into userinjuese values('','{$uid}','{$v}')"; $db->Query($sql,0); }
例2:登录界面:(用户可通过登录连接到显示自己权限功能的界面操作)
登录界面:
<body> <form action="loginchuli.php" method="post"> <div>用户名:<input type="text" name="uid" /></div> <div>密码:<input type="password" name="pwd" /></div> <input type="submit" value="登录" /><br /> </form> </body>
登录处理界面:
<?php session_start(); include("../fzl/czy.class.php"); $db = new czy(); $uid = $_POST["uid"]; $pwd = $_POST["pwd"]; $sql = "select pwd from users where uid='{$uid}'"; $mm = $db->StrQuery($sql); if($mm==$pwd && $pwd!="") { $_SESSION["uid"] = $uid; header("location:main.php"); } else { echo "登录失败!"; }
管理主页面:
<style type="text/css"> *{ margin:0px auto; padding:0px} .list{ width:100px; height:35px; background-color:#66C; color:white; text-align:center; line-height:35px; vertical-align:middle; float:left} </style> </head> <?php session_start(); include("../fzl/czy.class.php"); $db = new czy(); if(empty($_SESSION["uid"])) { header("loaction:login.php"); exit; } $uid = $_SESSION["uid"]; ?> <body> <div style="width:100%; height:35px;"> <?php //根据用户名查角色代号 $sjuese = "select jueseid from userinjuese where userid ='{$uid}'"; $ajuese = $db->Query($sjuese); //根据角色代号查功能 $attr = array(); foreach($ajuese as $v) { $sgn = "select ruleid from juesewithrules where jueseid='{$v[0]}'"; $agn = $db->Query($sgn); $attr = array_merge($attr,$agn);//根据角色名称找到的每条功能数组都合并到数组$attr里面 } $attr = array_unique($attr,SORT_REGULAR);//对数组中重复的数据去重[SORT_REGULAR(手册指不改变类型)] foreach($attr as $v) { $sname = "select name from rules where code='{$v[0]}'"; $name = $db->strQuery($sname); echo "<div class='list'>{$name}</div>"; } ?> </div> </body>
权限管理:(RBAC)的更多相关文章
- devops-jenkins基于角色的权限管理RBAC
一. devops-jenkins基于角色的权限管理RBAC 1 安装角色的rbac角色管理 1.1) 点击系统管理 1.2) 选择插件管理 1.3) 选择可选插件,输入role搜索 1.4) 选择 ...
- php人员权限管理(RBAC)
在说权限管理前,应该先知道权限管理要有哪些功能: (1).用户只能访问,指定的控制器,指定的方法 (2).用户可以存在于多个用户组里 (3).用户组可以选择,指定的控制器,指定的方法 (4).可以添 ...
- 详解权限管理(RBAC)的实现方法
在说权限管理前,应该先知道权限管理要有哪些功能: ().用户只能访问,指定的控制器,指定的方法 ().用户可以存在于多个用户组里 ().用户组可以选择,指定的控制器,指定的方法 ().可以添加控制器和 ...
- 权限管理RBAC模型概述
一.什么是RBAC模型 RBAC模型(Role-Based Access Control:基于角色的访问控制)模型是比较早期提出的权限实现模型,在多用户计算机时期该思想即被提出,其中以美国George ...
- Django_用户权限管理rbac
组成部分 1.初始化权限:login视图initial_permission,把权限信息放入session.initial_permission函数生成权限列表.菜单列表 2.中间件验证权限:在第一次 ...
- 权限管理-RBAC
(一)RBAC 通过用户与角色关联,角色与操作的关联实现用户与操作的关联 (二)权限细分 (三)数据库设计 (四)程序设计 (五)权限与应用程序 (1)应用URL实现程序权限控制 (2)应用code实 ...
- Yii的权限管理rbac
1.首先我们要在配置文件的组件(component)里面配置一下 Rbac 在对应项目下的config/main.php或者config/main-local.php下添加 'authManager' ...
- thinkphp权限管理Rbac实例
首先,先建立Rbac那五张表(用户表,角色表,节点表,权限表,角色-用户表),后面四张可以在thinkphp中Rbac类里直接复制. 第二步,根据需求往那五张表里插入数据,注意:节点表里的节点名称一定 ...
- php 人员权限管理(RBAC)
一.想好这个权限是什么? 就做一个就像是vip的功能,普通用户和vip用户的功能是不一样的,先来考虑一下数据库怎么设计 肯定要有用户表.还有用户所用的角色.然后就是权限功能表:可是在这里面有关联也就 ...
- onethink权限管理 RBAC
查看了官网的视频,写的不错. 大致熟悉了流程.这里打算自己动手写一个权限的控制
随机推荐
- sample
sample是在数据源取样. val data = sc.parallelize(1 to 20) data.sample(true,0.4).collect sample第一个参数表示是否是重复抽样 ...
- eclipse集成maven3后,创建java项目详细图解
1.创建一个Java项目 1)File--->New--->Other--->Maven--->Maven Projet 2)选择maven-archetype-quickst ...
- 2016.6.17 kali Linux 隧道工具
隧道工具的基本概念: 1.在计算机网络中,隧道工具是指使用一种网络协议去封装另一种网络协议的技术. 2.通常用来数据伪装或者穿越防火墙,在入侵目标系统后,可用来提升权限和权限维持. Kali中的隧道工 ...
- node相关--测试
测试: assert模块; //node自带 var assert = require('assert'); var now = Date.now(); console.log(now); asser ...
- 转:EasyHook远程代码注入
EasyHook远程代码注入 最近一段时间由于使用MinHook的API挂钩不稳定,经常因为挂钩地址错误而导致宿主进程崩溃.听同事介绍了一款智能强大的挂钩引擎EasyHook.它比微软的detours ...
- LIB 配置文件读写器
由于读写配置文件的次数比较频繁,而且拥有众多的类库,到最后,直接被各种各样的类库烦死. 顺手封一个简单,实用的.主要功能: 读写AppSetting 读取连接字符串 读取自定义配置节 using Sy ...
- DevExpress DXperience 的ASPxFilterControl 不显示 Like 菜单的方法
当使用Linq 作为数据源时,如果使用 ASPxFilterControl 的 Like 菜单筛选数据,就会出现以下错误 LINQ to Entities does not recognize the ...
- BZOJ1845 : [Cqoi2005] 三角形面积并
求出所有交点后从左往右扫描线,用每段的中位线去截所有三角形,算出长度并后乘以该段长度即可,时间复杂度$O(n^3\log n)$. #include<cstdio> #include< ...
- c#中的partial关键字(转)
c#中的partial关键字 Partial: 这是C#2.0的新特性 Partial关键字起到把一个class分段组合作用,能用于多个接口或一个继承 代码片断: namespace Com ...
- github配置
注册github账号: 准备秘钥文件: 认证: https://github.com 测试秘钥: 创建仓库: 执行下面命令创建git远程仓库: 添加一个two.txt文件: