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