<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## 知識點 1、權限理解 2、工作準備 3、角色管理 4、添加新角色 5、刪除角色 6、編輯角色 [TOC] ## 一、權限理解 權限訪問控制有兩個思路,一是RBAC,一個是auth 但Auth更靈活,凡是RBAC能做到的Auth都能做到,所以建議用Auth ### (一)RBAC RBAC基于角色的訪問控制,RBAC支持三個著名的安全原則:最小權限原則,責任分離原則和數據抽象原則。 RBAC認為權限授權實際上是Who、What、How的問題。 在RBAC模型中,who、what、how構成了訪問權限三元組,也就是“Who對What(Which)進行How的操作”。 基于角色的權限訪問控制(Role-Based Access Control)作為傳統訪問控制(自主訪問,強制訪問)的有前景的代替受到廣泛的關注。 在RBAC中,權限與角色相關聯,用戶通過成為適當角色的成員而得到這些角色的權限。這就極大地簡化了權限的管理。 在一個組織中,角色是為了完成各種工作而創造,用戶則依據它的責任和資格來被指派相應的角色,用戶可以很容易地從一個角色被指派到另一個角色。 角色可依新的需求和系統的合并而賦予新的權限,而權限也可根據需要而從某角色中回收。角色與角色的關系可以建立起來以囊括更廣泛的客觀情況。 ### (二)Auth權限管理 Auth權限管理比RBAC更加靈活,auth對權限的控制更為精細。 Auth的特性: 1、是對規則進行認證,不是對節點進行認證。用戶可以把節點當作規則名稱實現對節點進行認證。 auth=newAuth();auth=newAuth();auth->check(‘規則名稱’,’用戶id’) 2、可以同時對多條規則進行認證,并設置多條規則的關系(or或者and)。 auth=newAuth();auth=newAuth();auth->check(‘規則1,規則2’,’用戶id’,’and’) 3、一個用戶可以屬于多個用戶組(think_auth_group_access表 定義了用戶所屬用戶組), 我們需要設置每個用戶組擁有哪些規則(think_auth_group 定義了用戶組的權限)。 4、支持規則表達式。在think_auth_rule 表中定義一條規則時,如果type為1, condition字段就可以定義規則表達式。 如定義{score}>50 and {score}<100 表示用戶的分數在50-100之間時這條規則才會通過。 參考網址:https://blog.csdn.net/lamp_yang_3533/article/details/78242945 ## 二、工作準備 ### (一)建立數據表 用戶表:sfox_user 用戶組(用戶角色)表:sfox_auth_group 關聯表:sfox_auth_group_access 規則表:sfox_auth_rule 用戶ID對應哪個角色,而角色擁有相應的權限 ### (二)引入Auth類庫 位置:\extend\util\Auth.php 配置: ~~~ protected $_config = array( 'auth_on' => true, // 認證開關 'auth_type' => 1, // 認證方式,1為實時認證;2為登錄認證。 'auth_group' => 'auth_group', // 用戶組數據表名 'auth_group_access' => 'auth_group_access', // 用戶-用戶組關系表 'auth_rule' => 'auth_rule', // 權限規則表 'auth_user' => 'user' // 用戶信息表 ); ~~~ ### (三)添加用戶、角色和規則控制器 'User', 'Authrole', 'Authrule' ### (四)添加角色相關模板 'authrole/index','authrule/index','user/index' ### (五)后臺添加菜單 圖標:fa-cog 權限管理》 角色管理:authrole 規則管理:authrule 用戶管理:user ### (六)控制器引入相關類庫 use think\Controller; use think\Db; ## 三、角色管理 ### (一)操作 ~~~ public function index($id=0, $tab=1){ //獲取角色信息 $authrolelist = Db::name('auth_group')->order('id')->select(); $this->assign('authrolelist',$authrolelist); return view(); } ~~~ ### (二)模板 ~~~ {volist name="authrolelist" id="vo"} <tr> <td>{$vo.id}</td> <td>{$vo.title}</td> <td>{$vo.remark}</td> <td>{$vo.status? '√' : '?'}</td> <td> <a href="{:url('index',['tab'=>3,'id'=>$vo.id])}">權限設置</a>&nbsp;&nbsp;|&nbsp;&nbsp; <a href="{:url('modelsField/index',['id'=>$vo.id])}">編輯</a>&nbsp;&nbsp;|&nbsp;&nbsp; <a name="delete" href="{:url('delete',['id'=>$vo.id,'tablename'=>$vo.tablename])}">刪除</a> </td> </tr> {/volist} ~~~ ## 四、添加新角色 ### 1、模板 這個簡單,不作詳述 ### 2、操作 ~~~ public function add(){ if(request()->isPost()){ $data = input('post.'); if(trim($data['title']=='')){ return error('角色名稱不能為空!'); exit(); } //添加新角色 Db::name('auth_group')->strict(false)->insert($data); return success('新角色添加成功!',url('index',['tab'=>1])); } } ~~~ ### 3、數據表字段不存在[tab] 原因分析:TP5對數據表字段,默認檢查是嚴格的,所以,要么去嚴格檢查,要么刪除該字段在插入或者更新數據 解決辦法: 在Db類中,用strict(false)即可 在模型中,allowField(true) Db::name('auth_group')->strict(false)->insert($data); $this->allowField(true)->save($data) ## 五、刪除角色 ~~~ 模板 <a name="delete" href="{:url('delete',['id'=>$vo.id])}">刪除</a> 操作 public function delete($id = 0){ if(Db::name('auth_group')->where('id', $id)->delete()){ return success('刪除成功!',url('index',['tab'=>1])); }else{ return error('刪除失敗!',url('index',['tab'=>1])); } } ~~~ ## 六、編輯角色 Db類編輯update Db類新增insert ### 1、模板鏈接 ~~~ <form method="post" class="form-horizontal" action="{:url('authrole/index')}" data-type="ajax"> <a href="{:url('index',['id'=>$vo.id,'tab'=>3])}">編輯</a> </form> ~~~ ### 2、顯示編輯tab ~~~ public function index($id=0, $tab=1){ //獲取角色信息 $authrolelist = Db::name('auth_group')->order('id')->select(); $this->assign('authrolelist',$authrolelist); // 編輯角色 if(3==$tab){ $info = Db::name('auth_group')->where('id',$id)->find(); if($info!=null && is_array($info)){ $this->assign('info',$info); } } return view(); } ~~~ ### 3、編輯操作 ~~~ public function edit(){ if(request()->isPost()){ $data = input('post.'); if(trim($data['title']=='')){ return error('角色名稱不能為空!'); exit(); } //編輯新角色 Db::name('auth_group')->strict(false)->update($data); return success('角色編輯成功!',url('index',['tab'=>1])); } } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看