In addition to Weibo, there is also WeChat
Please pay attention
WeChat public account
Shulou
2025-01-16 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Development >
Share
Shulou(Shulou.com)06/03 Report--
Editor to share with you the example analysis of the srbac permission extension module in Yii, I believe that most people do not know much about it, so share this article for your reference. I hope you will gain a lot after reading this article. Let's learn about it together.
The details are as follows:
1. Set permission rules table: can be placed in the module module configuration file
Public function init () {/ / Operation permission table, the following fields must exist: / / itemname role name / ID, / / type authorization project type / 1 (task) or 2 (role), / / bizrule permission / logical operation expression: false has permission to operate, / / data data / YII is temporarily unavailable Yii::app ()-> authManager- > itemTable = 'AuthItem' / / member group-permission corresponding table. The following fields must exist: / / child role / ID, / / parent parent role / ID. This table can be executed in a loop and can inherit Yii::app ()-> authManager- > itemChildTable = 'uthItemChild' at multiple levels. / / member-member group corresponding table. The member group can be the operation name directly. The following fields must exist: / / itemname role name / ID, / / userid user name / ID, / / bizrule permission / logical operation expression false is authorized to operate, / / data data / YII is not available for the time being Yii::app ()-> authManager- > assignmentTable = 'zd_mem_glog'
two。 Implementation rules, where the controller inherits the base class SBaseController, which was originally Controller
Class ProductController extends SBaseController {.} class SBaseController extends Controller {.}
3. SBaseController inherits the base class Controller, prefixed with beforeAction, to achieve permission verification.
Protected function beforeAction ($action) {/ / load the module delimiter $del = Helper::findModule ('srbac')-> delimeter; / / get the module name before $mod = $this- > module! = = null? $this- > module- > id. $del: "; $contrArr = explode (" / ", $this- > id); $contrArr [sizeof ($contrArr)-1] = ucfirst ($contrArr [sizeof ($contrArr)-1]); $controller = implode (". ", $contrArr); $controller = str_replace (" / ",.", $this- > id) / / generate static page module + separator + controller (capital letter) + method (capital letter) example: model-ControllerAction if (sizeof ($contrArr) = = 1) {$controller = ucfirst ($controller);} $access = $mod. $controller. Ucfirst ($this- > action- > id); / / verify whether the access page address is in the always allowed list. Return permission if (in_array ($access, $this- > allowedAccess ()) {return true;} / / verify whether SRBAC is installed, but not installed. The returned permission to access if (! Yii::app ()-> getModule ('srbac')-> isInstalled ()) {return true } / / verify whether SRBAC is enabled or not. The returned permission to access if (Yii::app ()-> getModule ('srbac')-> debug) {return true;} / / permission verification if (! Yii::app ()-> user- > checkAccess ($access) | | Yii::app ()-> user- > isGuest) {$this- > onUnauthorizedAccess ();} else {return true;}}
4. CDbAuthManager reads the current user role
Public function getAuthAssignments ($userId) {$rows=$this- > db- > createCommand ()-> select ()-> from ($this- > assignmentTable)-> where ('userid=:userid', array (': userid'= > $userId))-> queryAll (); $assignments=array (); foreach ($rows as $row) {if (($data=@unserialize ($row ['data'])) = = false) $data=null $assignments [$row ['itemname']] = new CAuthAssignment ($this,$row [' itemname'], $row ['userid'], $row [' bizrule'], $data);} return $assignments;}
5. CDbAuthManager reads the corresponding permissions for roles
Public function getAuthItem ($name) {$row=$this- > db- > createCommand ()-> select ()-> from ($this- > itemTable)-> where ('name=:name', array (': name'= > $name))-> queryRow (); if ($rowbacks created false) {if (($row ['data']) = = false) $data=null; return new CAuthItem ($this,$row [' name'], $row ['type'], $row [' description'], $row ['bizrule'], $data) } else return null;}
6. Corresponding operation of CDbAuthManager read permission
Protected function checkAccessRecursive ($itemName,$userId,$params,$assignments) {if (($item=$this- > getAuthItem ($itemName)) = null) return false; Yii::trace ('Checking permission "'. $item- > getName ().'", 'system.web.auth.CDbAuthManager'); if (! isset ($params [' userId'])) $params ['userId'] = $userId If ($this- > executeBizRule ($item- > getBizRule (), $params,$item- > getData ()) {if (in_array ($itemName,$this- > defaultRoles)) return true; if (isset ($assignments [$itemName])) {$assignment=$assignments [$itemName]; if ($this- > executeBizRule ($assignment- > getBizRule (), $params,$assignment- > getData ()) return true } $parents=$this- > db- > createCommand ()-> select ('parent')-> from ($this- > itemChildTable)-> where (' child=:name', array (': name'= > $itemName))-> queryColumn (); foreach ($parents as $parent) {if ($this- > checkAccessRecursive ($parent,$userId,$params,$assignments) return true;}} return false;}
7. CAuthManager authentication permissions
Public function executeBizRule ($bizRule,$params,$data) {return $bizRule==='' | | $bizRule===null | | ($this- > showErrors? Eval ($bizRule)! = 0: @ eval ($bizRule)! = 0;}
8. Always allow access rule settings
The above is all the contents of the article "sample Analysis of srbac permission extension Module in Yii". Thank you for reading! I believe we all have a certain understanding, hope to share the content to help you, if you want to learn more knowledge, welcome to follow the industry information channel!
Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.
Views: 0
*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.
Continue with the installation of the previous hadoop.First, install zookooper1. Decompress zookoope
"Every 5-10 years, there's a rare product, a really special, very unusual product that's the most un
© 2024 shulou.com SLNews company. All rights reserved.