国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

實用PHP會員權限控制實現原理分析

2024-05-04 23:18:32
字體:
來源:轉載
供稿:網友
我的通用權限系統設計是更換權限時候盡量不要涉及到代碼修改,來自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了。

實用PHP會員權限控制實現原理分析

 

  

實用PHP會員權限控制實現原理分析

 

  

實用PHP會員權限控制實現原理分析


 

實用PHP會員權限控制實現原理分析

實用PHP會員權限控制實現原理分析

實用PHP會員權限控制實現原理分析

實用PHP會員權限控制實現原理分析

實用PHP會員權限控制實現原理分析

實用PHP會員權限控制實現原理分析

實用PHP會員權限控制實現原理分析

實用PHP會員權限控制實現原理分析

實用PHP會員權限控制實現原理分析

實用PHP會員權限控制實現原理分析

實用PHP會員權限控制實現原理分析

實用PHP會員權限控制實現原理分析

實用PHP會員權限控制實現原理分析

實用PHP會員權限控制實現原理分析

實用PHP會員權限控制實現原理分析

實用PHP會員權限控制實現原理分析

實用PHP會員權限控制實現原理分析

實用PHP會員權限控制實現原理分析

實用PHP會員權限控制實現原理分析

實用PHP會員權限控制實現原理分析

實用PHP會員權限控制實現原理分析

實用PHP會員權限控制實現原理分析

實用PHP會員權限控制實現原理分析

 

  可以看框架文件

  project/router目錄有一個guestbookRouter.class.php

  在后臺

  

實用PHP會員權限控制實現原理分析

 

  取得guestbookRouter.class.php類名和方法。

  然后給這些方法加權限

  

實用PHP會員權限控制實現原理分析

 

  右邊有一個應用權限,有一個取消權限,如果取消權限表示沒有權限限制

  也就是刪除權限文件

  應用權限 表示給這個類添加權限,會生成一個權限文件。

  在project/router/acl/生成 guestbookACL.class.php文件

  程序在加載guestbookRouter.class.php時候會檢查有沒有guestbookACL.class.php權限文件

  有就使用權限檢證,沒有就沒有。這樣加減權限跟guestbookRouter.class.php文件入口沒有一點改動

  所以將來加權限方法很方便。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 郴州市| 孝感市| 禹城市| 广饶县| 丹巴县| 基隆市| 镶黄旗| 崇礼县| 陵水| 开阳县| 湖州市| 吉林市| 白银市| 鹰潭市| 黑水县| 包头市| 新沂市| 蕲春县| 滨州市| 沂源县| 舒城县| 洛阳市| 邛崃市| 富平县| 大方县| 泰州市| 盖州市| 通河县| 吐鲁番市| 皮山县| 当阳市| 大宁县| 出国| 惠东县| 三江| 绥滨县| 丰宁| 柞水县| 建昌县| 昔阳县| 延庆县|