国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

鑒權(quán)

webman/admin 目前只支持管理員鑒權(quán)。

原理

wa_rules 表中存儲(chǔ)著菜單和菜單下對(duì)應(yīng)的權(quán)限(控制器@動(dòng)作),例如

+----+--------------+----------------------------------------------------+
| id | title        | key                                                |
+----+--------------+----------------------------------------------------+
|  4 | 賬戶管理      | plugin\admin\app\controller\UserController        |
| 74 | 插入         | plugin\admin\app\controller\UserController@insert |
| 75 | 更新         | plugin\admin\app\controller\UserController@update |
| 76 | 刪除         | plugin\admin\app\controller\UserController@delete |
| 77 | 查詢         | plugin\admin\app\controller\UserController@select |
+----+--------------+----------------------------------------------------+

每個(gè)管理員都有一個(gè)或多個(gè)角色,每個(gè)角色在wa_rules表里都對(duì)應(yīng)著一系列可訪問控制器@動(dòng)作的記錄。

例如管理員訪問url路徑為/app/admin/user/insert 時(shí),鑒權(quán)中間件會(huì)判斷當(dāng)前管理員的角色里是否有plugin\admin\app\controller\UserController@insert 的記錄,有的話就有權(quán)限,否則沒有權(quán)限。

提示
鑒權(quán)中間件在plugin/admin/app/middleware/AccessControl.php

頁面內(nèi)鑒權(quán)

有時(shí)候我們需要控制頁面的某部分例如某個(gè)按鈕只展現(xiàn)給有權(quán)限的管理員查看,這時(shí)可以通過給相關(guān)頁面dom節(jié)點(diǎn)增加 permission 屬性,例如

<div>
    <button permission="app.admin.admin.insert">
        新增
    </button>
    <button permission="app.admin.admin.delete">
        刪除
    </button>
</div>

permission的值實(shí)際上是變種的url路徑(/.代替,字母全部小寫),例如新增按鈕需要請(qǐng)求的url路徑是/app/admin/admin/insert,則permission="app.admin.admin.insert",如果當(dāng)前管理員在wa_rules表里沒有plugin\admin\app\controller\AdminController@insert對(duì)應(yīng)的記錄,則無法看到插入按鈕。

權(quán)限注釋

給控制器的方法添加注釋,這樣能讓權(quán)限系統(tǒng)自動(dòng)識(shí)別菜單綁定的控制器對(duì)應(yīng)的權(quán)限名稱,方便在"角色管理"里為角色識(shí)別并添加權(quán)限。

例如"權(quán)限管理"下的"賬戶管理"菜單綁定的控制器類為plugin\admin\app\controller\AdminController,這個(gè)類的每個(gè)方法的注釋如下

<?php
namespace plugin\admin\app\controller;

use plugin\admin\app\controller\Crud;
use support\Request;

class AdminController extends Crud
{
    /**
     * 刪除
     */
    public function delete(Request $request){}

    /**
     * 查詢
     */
    public function select(Request $request){}

    /**
     * 添加
     */
    public function insert(Request $request){}

    /**
     * 更新
     */
    public function update(Request $request){}

}

則在角色管理時(shí)就會(huì)顯示該菜單下的具體權(quán)限名稱,如圖。

img.png

假設(shè)權(quán)限勾選了"賬戶管理"下的"查詢"選項(xiàng),那么這個(gè)角色就有了訪問plugin\admin\app\controller\AdminController控制器的select方法的權(quán)限。

超級(jí)管理員

系統(tǒng)自帶一個(gè)超級(jí)管理員角色,這個(gè)角色的權(quán)限為*,代表著可以訪問系統(tǒng)的任何控制器及方法。開發(fā)者不要更改或者刪除這個(gè)角色。

登錄白名單

有時(shí)候某些action不需要登錄就可以訪問,例如登錄驗(yàn)證請(qǐng)求、驗(yàn)證碼請(qǐng)求等,這時(shí)候我們可以給控制器添加一個(gè)$noNeedLogin屬性,里面填寫當(dāng)前控制器不需要登錄就可訪問的action名稱,例如

<?php
namespace plugin\admin\app\controller;
use plugin\admin\app\controller\Base;

/**
 * 管理員賬戶
 */
class AccountController extends Base
{
    /**
     * 不需要登錄的方法
     * @var string[]
     */
    public $noNeedLogin = ['login', 'captcha'];
}

鑒權(quán)白名單

有時(shí)候某些action不需要鑒權(quán)(但需要登錄),例如獲取當(dāng)前登錄管理員的信息接口,此時(shí)可以給控制器添加一個(gè)$noNeedAuth屬性,例如

<?php
namespace plugin\admin\app\controller;
use plugin\admin\app\controller\Base;

/**
 * 管理員賬戶
 */
class AccountController extends Base
{
   /**
     * 不需要鑒權(quán)的方法
     * @var string[]
     */
    public $noNeedAuth = ['info'];
}

數(shù)據(jù)限制

有些表的數(shù)據(jù)很敏感,不能給所有管理員查看,這時(shí)候我們可以使用數(shù)據(jù)限制功能,只展示當(dāng)前管理員可查看的數(shù)據(jù)。數(shù)據(jù)限制通過控制器的$dataLimit$dataLimitField兩個(gè)屬性來控制,例如

class FooController extends Crud
{
    /**
     * 開啟auth數(shù)據(jù)限制
     * @var string
     */
    protected $dataLimit = 'auth';

    /**
     * 以admin_id為數(shù)據(jù)限制字段
     * @var string
     */
    protected $dataLimitField = 'admin_id';

}

$dataLimit 標(biāo)識(shí)數(shù)據(jù)限制類型,可選值為有

  • null 不做限制,任何管理員都可以查看該表的所有數(shù)據(jù)
  • auth 管理員能看到自己以及自己的子管理員插入的數(shù)據(jù)
  • personal 管理員只能看到自己插入的數(shù)據(jù)

$dataLimitField 表中存儲(chǔ)admin_id字段的名字,絕大部分情況下是admin_id

數(shù)據(jù)限制的邏輯在 plugin/admin/app/controller/Crud.php 中的 selectInput 方法中。

外部系統(tǒng)接入鑒權(quán)

請(qǐng)參考其它系統(tǒng)接入

編輯于2024-10-23 10:50:05 完善本頁 +發(fā)起討論
贊助商