cleey
望着那一丝海线,若隐若现。落日下的海霞,数不尽的美,看不完的醉
如何做权限控制?
这里只是我的项目用到的一种方法,欢迎大家探讨:
关于权限控制的问题,最近项目用到的一种方法,具体思路如下:
1、自动获取所有操作,写入数据库
2、为每个权限组添加操作,写入数据库
3、用户操作时需要判断是否有这样的操作就行。

这里有个问题,就是分配权限的时候不知道获取的操作是干什么的,都是英文字符串,所以还需要加一个函数注释:

那么以PHP为例,

主要是,获取所有类,及其所有函数;

类,大家可以自己指定,或者,用相关技术获得。

我主要介绍的是获取类的所有函数,及其操作注释。

以下这段代码,诠释了所有的操作,及其说明的获取,请粘贴使用,查看结果:


<?php

class test{
/**
* @cc add opreation
*/
public function add(){
echo 'add';
}

/**
* @cc delete opreation
*/
public function delete(){
echo 'delete';
}

/**
* @cc update opreation
*/
public function update(){
echo 'update';
}

/**
* @cc select opreation
*/
public function select(){
echo 'select';
}
}
echo "string";

// 获取某类的函数的注释
function cc_get_desc($module,$fc){
$act = new $module();
$func = new ReflectionMethod($act,$fc);
$tmp = $func->getDocComment();

$flag = preg_match_all('/@cc(.*?)\n/',$tmp,$tmp);
$tmp = trim($tmp[1][0]);
$tmp = $tmp !='' ? $tmp:'无';
return $tmp;
}

// 获取某类的所有函数 并执行获取函数的注释
function cc_get_all($classname){
$func = get_class_methods($classname);
foreach ($func as $key) {
$tmp[$key] = cc_get_desc('test','add');
}
var_dump($tmp);
}

// 输出 操作,及其注释;
cc_get_all('test');

?>



最后结果为:

array (size=4)
'add' => string 'add opreation' (length=13)
'delete' => string 'add opreation' (length=13)
'update' => string 'add opreation' (length=13)
'select' => string 'add opreation' (length=13)


代表: 操作 => 操作具体注释,关于注释的获取操作,请见另一篇文章
http://www.chenglin.name/php/blog/318.html

两篇文章结合起来理解更详细。
<< 上一篇 WEB网页预加载 PHP集成环境安装 下一篇 >>
文章标签
随意 | Created At 2014 By William Clinton | 蜀ICP备14002619号-4 |