我的通用权限系统设计是更换权限时候尽量不要涉及到代码修改,来自chinaunix论坛,今天转过来看看。希望对大家有所帮助,对PHP100的朋友有个很高的提升。
复制代码 代码如下:
/*
*控制访问表
* acl值 功能
* 1 需要登录
* 2 自身修改
* 4 需要组的权限集合
* 8 需要身份访问集合
* 16 身份被禁止访问
* 32 可访问的日期
* 64 可访问的周日
* 128 可访问的时间
* 256 输入密码才能访问
* 512 超级管理使用
*/
class aclACL extends acl {
public $routername="acl";
public $aclid='2'; //权限资源ID,如果登录人员没有拥用这个权限那么其(下面)它值都为0也不能访问
public $roledisable=array(9); //禁用身份
public $pwd=123456; //密码访问 ACL->noPwd();
public $date=array('begin'=>0,'end'=>0); //允许日期之间
public $hours=array('begin'=>0,'end'=>0); //一日内小时区间
public $weeks=array('begin'=>0,'end'=>0); //一周内周一到周七
public $aclgroup=array("create"=>"4,45,8"); //create需要的组才能创建
public $aclrole=array("all"=>"6","create"=>"7,95,78"); //create需要的角色才能创建,该组需要ID为6的角色才能访问
public $acl=array("all"=>0,
"index"=>4, //表列4表示检查组的组合
"delete"=>1, //删除只登录后删除,当然呆以设置为2或4
"update"=>1, //更新提交只能登录后才能更新,在这里做也防止非法、post,edit是不能访问显示编辑内容页
"createForm"=>1, //也不能新提交数据库
"edit"=>0, //登录才显示编辑框
"show"=>0, //不用登录也能显示
"create"=>1); //创新表单需要登录操作 可以设置某个组才能创建
}
?>
这个是要认证的文件模块是acl
每当用户访问acl模块时候,如果开启了认证那么会调用这个类
然后这个类会根据$acl 的all或index等值去做认证检查。
把这个文件放在router/acl目录里面就可以了,框架会自动认证如果用户没有相应的正向授权是无法访问相应的限制的。
比如crud create方法 负向权限为17 那按照前面解释应该是 需要登录和组授权 就是$aclgroup 数组中create的4 45 8三个组,
首先会员没有登录将提示登录,如果会员不在这三个组是无法访问该方法的会提示没有权限。
目前router可以自己根据情况开启用acl控制
方法是在xxxxRouter.class.php文件中 添加 public function isAcl(){}
可以返回权限文件名比如返回curd,那么自动会调用curdACL.class.php类和名
curdRouter类设置验证
复制代码 代码如下:
class curdRouter extends controller{
//返回 RBAC 控制访问列表验证类默认是跟router同名也就是curd
//可以不写这个函数,那么不会启用通用权限系统。
public function isAcl(){}
public function index()
{
$booktype=M("booktype");
$this->pager=C("pager");//取得分类
$this->pager->setPager($booktype->count(),10,'page');//取得数据总数中,设置每页为10
$this->assign("list",$booktype->orderby("bookid desc")->limit($this->pager->offset(),10)->fetch()->getRecord());
}
public function login(){ //登录页面
}
public function logout(){ //退出页面
MY()->logout(); //退出登录
redirect(url_for("guestbook/index"),"退出成功",3);
}
public function noAcl($mask) { //处理一下如果没有权限转向登录
redirect(url_for("guestbook/login"),"需要登录",3);
}
public function loginpost() { //登录提交地方 简单处理下登录认证
if($_POST['author']=='queryphp'&&md5($_POST['pwd'])==md5('123456'))
{
MY()->setLogin(); //设置登录状态
redirect(url_for("guestbook/adminlist"),"登录成功",3);
}
redirect(url_for("guestbook/login"),"登录失败",3);
}
复制代码 代码如下:
/*
*登录信息基本类
*权限表可以缓存数据,登录时候恢复。
*/
class mybase {
public $options=array();
public $uid;
public $username;
public $isadmin;
public $role=array(); //我使用的身份
public $group=array(); //我所在组
public $grouprole=array(); //组的身份
public $mygroupMar=array(); //我拥有管理的组
public $mygroupOwn=array(); //属于我的组
public $acl=array(); //主动控制表 groupacl和myacl控制权限集合 内容是rbac的rbacid
public $groupacl=array(); //组拥用的控制权限
public $myacl=array(); //我的身份拥用的控制权限
public $loginfaild=0; //登录失败次数 如果超过这个数应该禁止IP登录几分种
这是基本
可以把myUser.class.php放在项目lib目录里面
复制代码使用MY()函数就可以取得myUser了。
可以看框架文件
project/router目录有一个guestbookRouter.class.php
在后台
取得guestbookRouter.class.php类名和方法。
然后给这些方法加权限
右边有一个应用权限,有一个取消权限,如果取消权限表示没有权限限制
也就是删除权限文件
应用权限 表示给这个类添加权限,会生成一个权限文件。
在project/router/acl/生成 guestbookACL.class.php文件
程序在加载guestbookRouter.class.php时候会检查有没有guestbookACL.class.php权限文件
有就使用权限检证,没有就没有。这样加减权限跟guestbookRouter.class.php文件入口没有一点改动
所以将来加权限方法很方便。
http://queryphp.googlecode.com/files/queryphp_2011_01_27.zip
相关推荐:
ChatGPT为什么用不了了?背后的真相揭秘!,ai写作专家收费吗
交友群都有哪些,交友群是干什么的 ,ai猫csgo
优化文字,让表达更精准:提升写作效率的关键,个人网站建设外包
AI+写文章:开启智能创作新时代
OpenAI新产品与现有技术的完美结合:赋能未来的智能变革,培训 ai
AI免费生成文本,内容创作新篇章
AI免费生成文章的软件:轻松创作的秘密武器
优排软件:高效管理新天地,轻松提升工作效率,长葛外贸网站建设
SEO化学物质:如何在化工行业提升搜索引擎排名和品牌曝光,rack ai
好用的AI写作工具,提升写作效率与创意的最佳选择
seo网站是什么东西,seo网站是什么东西啊 ,ai锯齿消失
Zkept:重塑未来生活的智能科技革新,营销推广的面试问题
seo组建需要什么条件,seo建站的步骤 ,ai肌肉宝宝
SEO关键词是什么意思?全面解析SEO关键字的核心作用,华为ai音箱 百度ai音箱
二创AI:打破创意壁垒,引领未来内容创作新潮流,背影教案网站建设游戏
中文润色:提升表达的艺术,打造无懈可击的语言魅力,广告营销推广新思路论文
AI缩短短文-提升创作效率,写作新体验,光速写作业ai写作app
主题导航-引领互联网世界的智慧之路,大渡口网站建设方案
SEO外,如何提升网站整体营销效果?,文轩网络营销推广方案
企业SEO:如何通过搜索引擎优化提升企业网络竞争力,安阳网站优化布局设计
SEO自从上线后的演变与未来发展趋势,拼多多增加关键词排名
SEO优化:如何让网站更具有吸引力,散文ai写作咒语是什么
“爱站”:开启网站优化与流量增长的新纪元,seo入门ppt
seo竞价做的什么工作,seo 竞价 ,office智能ai
怎么用AI写出高质量科普文章?揭秘新时代创作利器!
未来工作方式!AI在线工具让效率倍增,工作变轻松
seo种草什么意思,seo yoo na ,三维地震反演AI
2025年整站SEO排名优化策略:让你的网站脱颖而出,id排版ai
什么是seo快排,seo快排方案 ,ai剪图形
AI搜索相似文章怎么做?揭秘高效文章检索的核心技术!,程式ai软件
为什么要seo 运营,为什么需要seo ,ai人物头盔
为什么网站要做seo,网站做seo的目的是什么 ,ai初选
SEO是如何推动企业增长的关键力量,深圳罗湖网站建设设计
SEO指:如何通过精准优化提高网站流量和转化率,无锡论坛营销推广要多久
seo简介主要写什么,seo主要内容 ,AI弧线这
WPS改写-轻松提升文档创作效率的秘密武器,推广网站的优势
360排名优化价格:打造高效网络营销的制胜法宝,ai换脸刘浩存自wei
亚马逊的seo是什么阿,亚马逊seo项目 ,中考用ai写作会判0分吗
Chato1免费么?揭开这款AI聊天机器人的神秘面纱,交个朋友ai写作
seo点击工具,seo排名点击软件推荐 ,ai狂躁
未来科技:AI工具为生活赋能,打造智能未来
SEO合作:让你的网站在搜索引擎中脱颖而出,惠州抖音seo策划公司
SEO优化基础:让你的网站脱颖而出的秘密武器,模仿猫ai
ChatGPT不能打开EL?揭秘这一困扰背后的真相与解决方案,ai被动房
什么是“神马关键词”?如何用它提升你的网络营销效果?,新闻发布网站怎么做推广
SEO而且:打造高效网站流量增长的秘密武器,滨江网站推广营销
用AI写文章会不会查重率高?破解写作困扰的真相
ChatGPT3.5需要登录使用吗?AI使用的真相!,电脑版写作ai推荐怎么关闭
AI撰写率:让创作变得更高效,助力内容产业腾飞,人力ai
SEO策划:让你的网站迅速脱颖而出的秘诀,seo优化和技巧