ThinkPHP:简单的权限认证类gMAR[新增完整例子-订单管理后台]

来源:互联网 发布:linux shell 写入文件 编辑:程序博客网 时间:2024/05/29 03:46

gMAR是Group, Module, Action and Request_method的意思,gMAR是基于它们的组合规则进行对比验证。

特点:简单、支持规则、支持REQUEST_METHOD验证,兼容TP1.5、TP2.0,自动识别GROUP
缺点:灵活性还不够,只适合用些小系统

工作原理:
通过(GROUP_NAME)、MODULE_NAME、ACTION_NAME和$_SERVER['REQUEST_METHOD']的简单结合和预定义权限规则进行比较。

结合格式:

view plaincopy to clipboardprint?
(GROUP_NAME@)MODULE_NAME/ACTION_NAME_SERVER['REQUEST_METHOD']。 
(GROUP_NAME@)MODULE_NAME/ACTION_NAME_SERVER['REQUEST_METHOD']。

兼容格式:

view plaincopy to clipboardprint?
'*'          => '*/*:*'         //所有权限   
':GET'       => '*/*:GET'       //所有模块所有方法的GET请求   
'*:GET'                         //同上   
'*/:GET'                        //同上   
'*/action'   => '*/action:*'    //所有模块中action方法全部请求(GET & POST)   
'/action'                       //同上   
'action:GET' => '*/action:GET'  //所有模块中action方法的GET请求   
'Index/'     => 'Index/*:*'     //Index模块中所有方法的全部请求方式  
'Index/:*'                      //同上  
'Index/*:*'                     //同上  
'Index/:GET'  => 'Index/*:GET'  //Index模块中所有方法的GET请求  
'Index/action'=> 'Index/action:*'//Index模块中action方法的全部请求方式  
'Index/action:GET'               //Index模块中action方法中GET请求方式 
'*'          => '*/*:*'         //所有权限
':GET'       => '*/*:GET'       //所有模块所有方法的GET请求
'*:GET'                         //同上
'*/:GET'                        //同上
'*/action'   => '*/action:*'    //所有模块中action方法全部请求(GET & POST)
'/action'                       //同上
'action:GET' => '*/action:GET'  //所有模块中action方法的GET请求
'Index/'     => 'Index/*:*'     //Index模块中所有方法的全部请求方式
'Index/:*'                      //同上
'Index/*:*'                     //同上
'Index/:GET'  => 'Index/*:GET'  //Index模块中所有方法的GET请求
'Index/action'=> 'Index/action:*'//Index模块中action方法的全部请求方式
'Index/action:GET'               //Index模块中action方法中GET请求方式

使用方法:

view plaincopy to clipboardprint?
import('@.ORG.gMAR');  
gMAR::AccessCheck(); 
import('@.ORG.gMAR');
gMAR::AccessCheck();

Example:

view plaincopy to clipboardprint?
function _initialize() {  
    // 用户权限检查  
    if (C('USER_AUTH_ON') && !in_array(MODULE_NAME, explode(',', C('NOT_AUTH_MODULE')))) {  
        //检测是否登录  
        if (!Session::get(C('USER_AUTH_KEY'))) U('Public/login', null, true);  
        //gMAR权限验证  
        import ( '@.ORG.gMAR' );  
        if(!gMAR::AccessCheck()){  
            $this->error('权限不足,请与管理员联系');  
        }  
    }  

function _initialize() {
    // 用户权限检查
    if (C('USER_AUTH_ON') && !in_array(MODULE_NAME, explode(',', C('NOT_AUTH_MODULE')))) {
        //检测是否登录
        if (!Session::get(C('USER_AUTH_KEY'))) U('Public/login', null, true);
        //gMAR权限验证
        import ( '@.ORG.gMAR' );
        if(!gMAR::AccessCheck()){
            $this->error('权限不足,请与管理员联系');
        }
    }
}

http://files.cnblogs.com/cevin/gMAR.rar
http://files.cnblogs.com/cevin/ordersystem.zip

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yafeikf/archive/2009/12/07/4958100.aspx

原创粉丝点击