文档章节

实现权限控制的一种方法

 唐国伟
发布于 2015/02/15 15:34
字数 600
阅读 18
收藏 0
点赞 0
评论 0

有时候开发项目时,需要用到权限控制,这里提供一种简单的方法,表单页面:

<table width="100%">
    <tbody>
    	<tr height="20" >
    	  <td align="left">
    	   <input name="auth[project-index]" value="1" id="c_project" type="checkbox" onclick="setC('project')" <?php if ($auth['project-index']) echo 'checked' ?> >项目管理</td>
    	 <td align="left">
            <input class="c_project" name="auth[project-add]" type="checkbox" value="1" <?php if ($auth['project-add']) echo 'checked' ?> ><span>添加</span>
    	<input class="c_project" name="auth[project-edit]" type="checkbox" value="1" <?php if ($auth['project-edit']) echo 'checked' ?> ><span>修改</span>
    	<input class="c_project" name="auth[project-del]" type="checkbox" value="1" <?php if ($auth['project-del']) echo 'checked' ?> ><span>删除</span>
            </td></tr>
    	<tr height="20">
    		<td align="left">
    		<input name="auth[dep-index]" value="1" id="c_dep" type="checkbox" onclick="setC('dep')" <?php if ($auth['dep-index']) echo 'checked' ?> >部门管理 </td>
    		<td align="left">
    			<input class="c_dep" name="auth[dep-add]" type="checkbox" value="1" <?php if ($auth['dep-add']) echo 'checked' ?> ><span>添加</span>
    			<input class="c_dep" name="auth[dep-edit]" type="checkbox" value="1" <?php if ($auth['dep-edit']) echo 'checked' ?> ><span>修改</span>
    			<input class="c_dep" name="auth[dep-del]" type="checkbox" value="1" <?php if ($auth['dep-del']) echo 'checked' ?> ><span>删除</span>
    		</td>
    	</tr>
    	<tr height="20">
    		<td align="left">
    		<input name="auth[user-index]" value="1" id="c_user" type="checkbox" onclick="setC('user')" <?php if ($auth['user-index']) echo 'checked' ?> >用户管理 </td>
    		<td align="left">
    			<input class="c_user" name="auth[user-add]" type="checkbox" value="1" <?php if ($auth['user-add']) echo 'checked' ?> ><span>添加</span>
    			<input class="c_user" name="auth[user-edit]" type="checkbox" value="1" <?php if ($auth['user-edit']) echo 'checked' ?> ><span>修改</span>
    			<input class="c_user" name="auth[user-del]" type="checkbox" value="1" <?php if ($auth['user-del']) echo 'checked' ?> ><span>删除</span>
    		</td>
    	</tr>
        </tbody>
</table>


实现选中多个的JS方法(不要忘记引入jquery.js文件)

function setC(c) {
 if($("#c_"+c).attr('checked')) {
  $(".c_"+c).attr("checked",true);
 } else {
  $(".c_"+c).attr("checked",false);
 }
}

假如选中项目添加和任务添加复选框,提交后用$_POST['auth']接收到的数据是这样的数组形式:array('project-add'=>1,'task-add'=>1)

用php函数转化成字符串:$auth = array2string($_post['auth']),存到角色表的auth字段中

/**
 * 将数组转换为字符串
 */
function array2string($data, $isformdata = 1)
{
    if ($data == '') return '';
    if ($isformdata) $data = new_stripslashes($data);
    return serialize($data);
}

/**
 * 返回经stripslashes处理过的字符串或数组
 */
function new_stripslashes($string)
{
    if (!is_array($string)) return stripslashes($string);
    foreach ($string as $key => $val) $string[$key] = new_stripslashes($val);
    return $string;
}

当这个用户登录时,获取它所属的角色的auth字段值$data['auth'],然后$UserInfo['auth'] = string2array($data['auth']),将字符串转化成数组

/**
 * 将字符串转换为数组
 */
function string2array($data)
{
    if ($data == '') return array();
    return unserialize($data);
}

假如现在要判断它是否具有任务添加的权限,则

if($checkAuth('task-add')){
   echo('具有任务添加的权限');
}
function checkAuth($string){
    global $UserInfo;
    if ($UserInfo['auth'][$string]){
        return true;
    }else {
        return false;
    }
}

© 著作权归作者所有

共有 人打赏支持
粉丝 1
博文 4
码字总数 1531
作品 0
济宁
一种基于annotation的Spring-mvc权限控制方法

本文介绍一种采用annotation来对spring-mvc进行权限控制的方法. 通过枚举类来定义权限项. 将annotation标注到需要控制权限的spring-mvc方法上. 然后,在spring-mvc中定义全局过滤器, 过滤所有...

taojinhuo
2013/01/17
0
8
ASP.NET MVC 基于角色的权限控制系统的示例教程

上一次在 .NET MVC 用户权限管理示例教程中讲解了ASP.NET MVC 通过AuthorizeAttribute类的OnAuthorization方法讲解了粗粒度控制权限的方法,接下来讲解基于角色的权限控制方法。 基于角色的权...

鱼煎
2015/08/19
0
0
细谈asp.net系统用户权限开发

谈起asp.net的系统控件,要提及RBAC的基本思想,RBAC,就是英文:role based access control,译为,基于访问权限角色,在设计电子商务网站中经常要用到。 电子商务系统对安全问题有较高的要...

crossmix
2015/11/06
0
0
使用 Spring Security 保护 Web 应用的安全

在 Web 应用开发中,安全一直是非常重要的一个方面。安全虽然属于应用的非功能性需求,但是应该在应用开发的初期就考虑进来。如果在应用开发的后期才考虑安全的问 题,就可能陷入一个两难的境...

红薯
2010/12/03
9.3K
9
Spring Boot+Spring Security的相关事项

在采用Spring Security去控制用户访问资源的时候,由于Spring Boot 全局应该采用的是注解形式去配置各个模块。所以我们在这里除了写XML文件外。还有一种方法。就是采用注解去管理这两者。 在...

Twelve_ZX
2016/12/16
251
6
使用 Spring Security 保护 Web 应用的安全 转载

在 Web 应用开发中,安全一直是非常重要的一个方面。安全虽然属于应用的非功能性需求,但是应该在应用开发的初期就考虑进来。如果在应用开发的后期才考虑安全的问题,就可能陷入一个两难的境...

小样
2012/08/24
0
0
struts2学习笔记--拦截器(Interceptor)和登录权限验证Demo

 理解       Interceptor拦截器类似于我们学过的过滤器,是可以在action执行前后执行的代码.是我们做web开发是经常使用的技术,比如权限控制,日志.我们也可以把多个interceptor连在一起...

冬至饮雪
2016/02/15
0
0
Apache Shiro入门总结

一:数据库表结构 users:用户表,包含用户名、密码、角色ID。 roles:角色表,包含角色名。 permission:权限表,包含权限字符串(user:add),权限描述。 role_permission:中间表,包含角色和权限...

铂金小虫
2013/09/01
0
1
Django之路- 如何开发通用且万能的的权限框架组件

今天老男孩IT教育Python教学总监alex带你开通Django之路 需求讨论 权限设计 代码设计 自定义权限钩子 业务场景分析 假设我们在开发一个培训机构的客户关系管理系统系统分客户管理、学员管理、...

alex3714
2017/04/05
0
0
Django之路- 如何开发通用且万能的的权限框架组件

今天老男孩IT教育Python教学导师吴sir带你开通Django之路 需求讨论 权限设计 代码设计 自定义权限钩子 业务场景分析 假设我们在开发一个培训机构的客户关系管理系统系统分客户管理、学员管理...

米斯特赛文
2017/04/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

关于DCL双重锁失效及解决方案

关于DCL双重锁失效及解决方案 Double Check Lock (DCL)实现单例 DCL 方式实现单例的优点是既能够在需要时才初始化单例,又能够保证线程安全,且单例对象初始化后调用getInstance方法不进行...

DannyCoder
5分钟前
0
0
PowerDesigner 16.5 安装配置

PowerDesigner16.5破解版是一款业内领先且开发人员常用的数据库建模工具,PowerDesigner可以从物理和概念两个层面设计数据库,方便用户制作处清晰直观的数据流程图和结构模型,欢迎有需要的朋...

Gibbons
29分钟前
0
0
前端Tips: 创建, 发布自己的 Vue UI 组件库

创建, 发布自己的 Vue UI 组件库 前言 在使用 Vue 进行日常开发时, 我们经常会用到一些开源的 UI 库, 如: Element-UI, Vuetify 等. 只需一行命令, 即可方便的将这些库引入我们当前的项目: n...

ssthouse_hust
今天
1
0
大数据教程(2.13):keepalived+nginx(多主多活)高可用集群搭建教程【自动化脚本】

上一章节博主为大家介绍了目前大型互联网项目的keepalived+nginx(主备)高可用系统架构体系,相信大家应该看了博主的文章对keepalived/nginx技术已经有一定的了解,在本节博主将为大家分享k...

em_aaron
今天
4
0
Git 2.18版本发布:支持Git协议v2,提升性能

在最新的官方 Git 客户端正式版2.18中添加了对 Git wire 协议 v2 的支持,并引入了一些性能与 UI 改进的新特性。在 Git 的核心团队成员 Brandon Williams 公开宣布这一消息前几周,Git 协议 ...

六库科技
今天
0
0
Java8新特性之接口

在JDK8以前,我们定义接口类中,方法都是抽象的,并且不能存在静态方法。所有的方法命名规则基本上都是 public [返回类型] [方法名](参数params) throws [异常类型] {}。 JDK8为接口的定义带...

developlee的潇洒人生
今天
0
0
aop + annotation 实现统一日志记录

aop + annotation 实现统一日志记录 在开发中,我们可能需要记录异常日志。由于异常比较分散,每个 service 方法都可能发生异常,如果我们都去做处理,会出现很多重复编码,也不好维护。这种...

长安一梦
今天
2
0
将博客搬至CSDN

AHUSKY
今天
2
0
Python web框架Django学习(1)

1.Django简介 (1)Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。Django是一个开放源代码的Web应用框架,由Python写成。 (2...

十年磨一剑3344
今天
0
0
Databook-数据之书

Databook-数据之书 用于数据分析的Jupyter Notebooks。 不需购买服务器,快速开始自己的数据分析过程。 源码:https://github.com/openthings/databook 作者:openthings,https://github.co...

openthings
今天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部