PHP MVC中RBAC的最佳實現方案的比較
個人認為的PHP MVC框架中實現RBAC的原理 順序:
資料表
1.tb_user(id,uname,roleid)
2.tb_role(roleid,rolename)
3.tb_module(moduleid,moudulename,mvc_url)
4.tb_access(accessid,roleid,mouduleid)
實現原理
1. 根據$uid 得到 $roleid。
2. 根據當前MVC引數 __CLASS__ __METHOD__ 拼接成路由網址 $mvc_url
3. 根據 $mvc_url 去表 tb_module中查詢,得到 $moduleid
4. 根據 $roleid ,$mouduleid 查詢表 tb_access中是否有此條記錄
5. 如果 有,可以訪問;如果沒有,禁止訪問該動作 action 方法
缺點
假如有一個模組, class Article,方法function lists();。
如果當前使用者只有檢視許可權卻沒有修改、新增、刪除許可權,那麼lists頁面中關於 新增 修改 刪除 按鈕如何判斷?
另外一個方法
資料表
1.tb_user(userid,username,roleid)
2.tb_role(roleid,rolename)
3.tb_module(moduleid,moudulename,link,upid)
4.tb_permission(roleid,title,mouduleid,permission)
其中 permission 的值有這幾種
{1:檢視,2:新增,4:修改,8:刪除,16:...}
RBAC實現流程
1.通過使用者的 $userid 得到 $roleid
2.通過使用者當前的網址去查詢tb_module表中對應的link,得到 $moduleid。如果該module有父模組。那麼獲得他的父模組。比如當前模組MVC網址是 article/add,那麼他的真正moduleid是
select moduleid from tb_module
where id=(
select upid from tb_module where link='article/add'
)
3.通過 $roleid 和 $moduleid 去查詢 tb_permission,得到記錄總和
select sum(permission) as permission from tb_permission
where roleid=$roleid and moduleid=$moduleid
4.如果當前訪問 article/lst
switch($permission){
case 1: //只有訪問許可權
break;
case 2://訪問、新增許可權
break;
case 4://訪問、新增、修改許可權
break;
case 8://訪問、新增、修改、刪除許可權
break;
case 16:
break;
}
對於第二種方法,說下看法,類似於電腦檔案的 0777這種許可權。
相關推薦
PHP MVC中RBAC的最佳實現方案的比較
個人認為的PHP MVC框架中實現RBAC的原理 順序: 資料表 1.tb_user(id,uname,roleid) 2.tb_role(roleid,rolename) 3.tb_module(moduleid,moudulename,mvc_url) 4.tb_a
php負載中使用redis實現session會話保持
handler 們的 清理 數據庫 session serial 配置 ibm 方式 首先要明確session和cookie的區別。瀏覽器端存的是cookie每次瀏覽器發請求到服務端是http 報文頭是會自動加上你的cookie信息的。服務端拿著用戶的cookie作為key
ASP.NET Core MVC 中重寫DefaultControllerActivator實現屬性注入
ASP.NET Core中注入方式預設為構造器注入,不支援屬性注入以及其他更高階的注入.參考下面的說明: 但是對於習慣了屬性注入的開發人員來說比較頭疼,為了實現自動注入,需要額外加一個建構函式,還需要把需要提供的服務一一對應,這種操作兼職逼死強迫症.當然官方也給出解決方
PHP程式碼中是如何實現檔案上傳的?
這裡使用PHP的全域性陣列$_FILES來實現檔案上傳: $_FILES[“file”][“name”] - 被上傳檔案的名稱 $_FILES[“file”][“type”] - 被上傳檔案的型別 $_FILES[“file”][“size”] - 被上傳檔案的大小,以位元組計 $_F
在MVC 中使用 autofac 實現自動註冊
思路很簡單:首先我們去找到所有Dll,再去找到實現了IAutoInject 介面的類,然後使用RegisterAssemblyTypes進行注入。IAutoInject是一個空介面,用來輔助我們尋
php呼叫R的指令碼實現方案
由於在php網頁中,不可避免的需要R語言的強大功能。因此,在對於某些數學函式的實現,我們需要R語言來實現。具體做法就是,利用php的system函式呼叫R指令碼,從而實現對R指令碼的執行,通過php的檔案操作,從而獲取R指令碼執行結果。基本程式碼如下:
ASP.NET MVC中使用OutputCache實現伺服器端頁面級快取注意問題
CSDN廣告是越來越多了,所有部落格筆記不再更新,新網址 DotNet筆記 1) 血的教訓:先說使用OutputCache實現伺服器端頁面級快取注意問題 在ASP.NET MVC中,假如我們想要將某個頁面(即某個Action)快取在伺服器端,可以在Action上
案例:PHP Ajax 跨域最佳解決方案
本文通過設定Access-Control-Allow-Origin來實現跨域。 例如:客戶端的域名是edu.jb51.net,而請求的域名是edu.jb51.net。 如果直接使用ajax訪問,會有以下錯誤: XMLHttpRequest cannot load htt
ASP.NET MVC中使用JS實現不對稱加密密碼傳輸
摘要:ASP.NET MVC中登入頁面中點選登入後,使用者名稱、密碼將被明文傳輸到Controller中,使用Fiddler等工具可以輕鬆截獲並獲取密碼, 這是不安全的。 使用對稱加密,如AES,金鑰將被暴露前端程式碼,也是不安全的。使用不對稱加密能夠較好解決這個問題。本文
Laravel中自增實現方案
領取 更新數據 app public bin mpi 加減 進程 value 工作中經常會對一列數據進行自增操作,設想一個場景。總共發放10張優惠券(以下的操作以時間為序列)1)用戶1請求領取1張優惠券;2)進程1查詢到數據庫中剩余10張,代碼更新優惠券數量,此時為內存中優
棋牌平臺制作教程之php中的炸金花大小比較算法
算法 棋牌 PHP中紮金花比大小如何實現在棋牌遊戲中,不管是現實的還是線上的,炸金花無疑是最熱門棋牌遊戲之一,鄙人從小就酷愛炸金花,機緣巧合後面從事了IT行業,話不多說,直接進去正題吧。炸金花兩副牌的比較規則就不說了,註明一下是順子的時候 : JQK < A23 < QKA思路:炸金花下面
PHP Ajax 跨域問題最佳解決方案
ajax 跨域 域名 -c php文件 解決 tle ron 跨域訪問 客戶端 本文通過設置Access-Control-Allow-Origin來實現跨域。 例如:客戶端的域名是client.runoob.com,而請求的域名是server.runoob.com。 如
PHP中使用CURL實現GET和POST請求
由於 protocol 對稱加密 即使 匯報 bst 接口 useragent 拷貝 一、什麽是CURL? cURL 是一個利用URL語法規定來傳輸文件和數據的工具,支持很多協議,如HTTP、FTP、TELNET等。最爽的是,PHP也支持 cURL 庫。使用php的cURL
使用mysql的SUBSTRING_INDEX函數解決項目中編碼非重復問題的實現方案!
sel str strong mage 技術分享 介紹 mysq 實現 編碼 一 SUBSTRING_INDEX函數介紹 作用:按關鍵字截取字符串 substring_index(str,delim,count) 說明:substring_index(被截取字段,關鍵字,關
ASP.NET MVC中如何實現頁面跳轉
pub ring 項目 再見 name ati 方法 技術 mod 1,最簡單的方式:超鏈接 以下分別是連接到HomeController控制器下的SharpL動作方法,以及百度首頁。代碼如下: 1 <a href="Home\SharpL">打開S
PHP ajax跨域問題最佳解決方案
var cell clear 一定的 OS 添加 會有 request TP 一、本文通過設置Access-Control-Allow-Origin來實現跨域。 例如:客戶端的域名是client.runoob.com,而請求的域名是server.runoob.com。 如
PHP開發中基於layUI的三級聯動效果如何實現
ice type idt tex oct port inf eal 如何實現 後臺開發常常用到layUI框架,這樣才能讓整個頁面效果看起來美觀大方,然而有時候一些原生的效果放到layUI框架上是無法使用的,比如最近遇到了省市縣三級聯動的select效果。不同於之前的,l
php開發中Excel導入功能的具體實現方法
org read tro 功能 tac excel導入 max eat ade 對於在做php開發項目中,一般的項目設計到最多用到的是Excel的導出功能,而對於其導入功能一般是很少見的,而且對於php開發中Excel的導入功能也要比導出功能開發起來更困難一些,那麽今天就來
PHP Ajax 跨域問題最佳解決方案 【摘自菜鳥教程】
set color ray quest origin tty 所有 $origin con PHP Ajax 跨域問題最佳解決方案 分類 編程技術 http://www.runoob.com/w3cnote/php-ajax-cross-border.html 本文
Asp.net MVC中如何實現依賴注入(DI)(二)
昨天說了一下Castle與Autofac如何在MVC中的使用,今天再來簡單說一下Spring.Net框架在MVC中如何依賴注入的。 官網:http://www.springframework.net/ 專案結構圖: 首先,我們要在專案中新增Spring.Net的類庫引用,我們可以在N