应用权限
为了保证后台系统的安全性,后台载入的方法需设置为后台方法后才可加载.
设置应用下属方法为后台方法后,可在后台->应用管理 对应的应用页面内设置角色权限
通过注解设置
class test {
/**
* @auth 后台主页
*/
function home(){
echo('后台主页');
return true;
}
/**
* @auth 后台页面2
*/
function page2(){
echo('后台页面2');
return true;
}
}
注解需php>=5.6
注解分组权限
class test {
/**
* @auth 后台:主页
*/
function home(){
echo('后台主页');
return true;
}
/**
* @auth 后台:页面2
*/
function page2(){
echo('后台页面2');
return true;
}
/**
* @auth 用户:资料修改
*/
function useredit(){
echo('资料修改');
return true;
}
/**
* @auth 用户:密码修改
*/
function passwordEdit(){
echo('密码修改');
return true;
}
}
当 auth=-1 时,允许后台未登入用户访问此方法,如用户注册,登入等
当 auth=0 时,允许所有后台登入用户访问此方法,如文章列表页, 由方法内部自行判断是否允许访问
通过auth()方法设置
class test {
function auth() {
Return array('home'=>'后台主页','page2'=>'后台页面2');
}
function home(){
echo('后台主页');
return true;
}
function page2(){
echo('后台页面2');
return true;
}
}
模块内的方法使用:分隔(后台网址形式为?do=xxx:xxx:xxx)
function auth() {
Return array('homefunction'=>'后台主页','user:index'=>'用户查看','user:add'=>'用户增加','user:edit'=>'用户编辑','user:del'=>'用户删除');
}
合并多项同类型权限,合并后后台权限勾选时,只显示一个"用户管理"的勾选框
function auth() {
Return array('homefunction'=>'后台主页','user:index;user:add;user:edit;user:del'=>'用户管理');
}
如果应用有很多不同类型的权限,建议使用以下的数组格式,后台可以更直观的展示权限列表.
function auth() {
$auth=array();
$auth['基础管理']=array('homefunction'=>'后台主页','page2'=>'后台页面2');
$auth['用户管理']=array('user:index'=>'用户查看','user:add'=>'用户增加','user:edit'=>'用户编辑','user:del'=>'用户删除');
$auth['文章管理']=array('article:index'=>'文章列表查看','article:add'=>'文章增加','article:edit'=>'文章编辑','article:del'=>'文章删除');
Return $auth;
}
权限判断
后台应用可以通过P()函数判断当前登入用户是否拥有某个权限
function xxxx(){
if(!P('user:add')){
return E('无权限');
}
//.....
}
判断是否拥有其它应用的方法权限
if(P('user:add','classhash')){
echo('无权限');
return false;
}
判断某个用户是否拥有某个方法权限
if(P('user:add','classhash',$userid)){
echo('无权限');
return false;
}