W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
1.IP 權(quán)限檢測,如果配置了IP白名單(ADMIN_ALLOW_IP),則僅有白名單的IP可以通過這一步檢測。其他IP被直接拒絕。
2.特殊節(jié)點檢測,特殊節(jié)點有兩種。一種是任何管理員都可以訪問的節(jié)點(ALLOW_VISIT),例如修改密碼; 一種是除超級管理員外,任何管理員都不能訪問的節(jié)點(DENY_VISIT), 例如僅供超級管理員使用的功能或者某些不提供外部訪問但因為編碼需要不得不定義為public的方法。
如果ALLOW_VISIT檢測通過,直接放行訪問。如果DENY_VISIT檢測通過,直接拒絕。如果二者都未通過,則會進入下一步權(quán)限檢測。
PS:在二次開發(fā)完成后,應仔細檢查每個控制的公共方法,包括繼承的公共方法。確保每個公共方法,出現(xiàn)在菜單,ALLOW_VISIT,DENY_VISIT之一。
3.動態(tài)檢測,即有些url是后來動態(tài)的,例如分類,不可能我們每創(chuàng)建一個分類就為這個分類添加一個節(jié)點,更不可能每添加一篇文檔就為這篇文檔添加一個節(jié)點,這樣不僅管理麻煩而且節(jié)點數(shù)量也會爆炸性增長。因此,需要寫一段程序來檢測此類url,詳細擴展方法見下文。
4.菜單節(jié)點檢測,即通過菜單”管理配置“的節(jié)點,在”權(quán)限管理->訪問授權(quán)“進行設(shè)置控制。檢測通過后放行,否則拒絕。
相關(guān)數(shù)據(jù)表
auth_extend
group_id 保存用戶組id
type 權(quán)限擴展類型,"分類授權(quán)"的type為1,如果要擴展授權(quán),您要為您的擴展權(quán)限類型規(guī)定一個type值,與其他類型的擴展授權(quán)區(qū)分。
extend_id 保存用戶組關(guān)聯(lián)的擴展數(shù)據(jù)的id,對"分類授權(quán)"而言,該字段保存的自然就是分類的id了
模型代碼編寫
您需要在 AuthGroupModel 模型中定義一個靜態(tài)方法,供控制器查詢某個用戶對某個類型的擴展權(quán)限擁有權(quán)限的數(shù)據(jù)id。
以"分類授權(quán)"為例,AuthGroupModel::getAuthCategories(UID) 方法做了如下事情:
1.根據(jù)用戶id,查出用戶所屬用戶組group_id
2.根據(jù)group_id,從auth_extend表以type=1為條件查出了extend_id,即用戶擁有權(quán)限的分類.
另外,您需要定義一個方法,用來保存權(quán)限設(shè)定。
以"分類授權(quán)"為例,AuthGroupModel::addToCategory($category_id,$uid) 即用來把分類的權(quán)限設(shè)定寫入auth_extend表
控制器代碼編寫
用來執(zhí)行動態(tài)檢測的程序代碼,定義在相應控制器的 checkDynamic方法,因此,需要擴展動態(tài)權(quán)限檢測時,只需要在你的控制器中創(chuàng)建checkDynamic方法,并在其中實現(xiàn)檢測業(yè)務(wù)邏輯。sentCMS的分類和文檔的權(quán)限控制即通過在ArticleController中定義checkDynamic方法實現(xiàn)。
與模板有關(guān)的控制器代碼編寫就不再介紹。
以"分類授權(quán)"為例,相關(guān)方法如下:
1.addToCategory() 為用戶授權(quán)某個分類
2.category() 輸出分類授權(quán)設(shè)定頁面
模板代碼編寫
1.修改View/AuthManager/index.html,增加一個鏈接,指向具體的權(quán)限設(shè)定頁面
例如:"分類授權(quán)"的代碼:分類授權(quán)
2.創(chuàng)建您的授權(quán)設(shè)定頁模板,分類授權(quán)設(shè)置頁模板位于 View/AuthManager/category.html
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: