如何做权限控制?

Cleey 发布于 2014/02/14 10:55
阅读 749
收藏 11
PHP

这里只是我的项目用到的一种方法,欢迎大家探讨:

chenglin博客,原文地址:http://www.chenglin.name/php/blog/395.html

关于权限控制的问题,最近项目用到的一种方法,具体思路如下:
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-&gt;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');


?&gt;</pre> 




最后结果为:
 
array (size=4)
  'add' =&gt; string 'add opreation' (length=13)
  'delete' =&gt; string 'add opreation' (length=13)
  'update' =&gt; string 'add opreation' (length=13)
  'select' =&gt; string 'add opreation' (length=13)


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


两篇文章结合起来理解更详细。

chenglin博客,原文地址:http://www.chenglin.name/php/blog/395.html

加载中
0
JPer
JPer
我喜欢用的是,有权限模块,单独剥离出来,所有的请求经过这个限制,然后去转发规则
Cleey
Cleey
不太明白意思,我提供个解决方案,具体实现,都是可以分模块,可以分具体权限,都可以。
返回顶部
顶部