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

gMAR是一种基于Group, Module, Action and Request method的权限验证方法,适用于小型系统。它通过简单的组合规则来验证权限,支持REQUEST_METHOD验证,并兼容TP1.5和TP2.0版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/yafeikf/archive/2009/12/07/4958100.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值