实用PHP会员权限控制实现原理分析

2019-04-09 06:33:19王振洲

  //返回 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了。
curd6.gif

 

  

rbac.png

 

  

rbac-2.gif

 
rbac-4.gif
rbac-5.gif
相关文章 大家在看