<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ### 導入數據表 > 本工具優化為多端權限認證,同時每端又支持通過傳website\_id實現同個應用saas權限制,并可通過配置auth\_rule\_unified參數來指定同個應用內是使用同個權限規則還是通過website\_id來區分多個權限規則`toadmin_`為admin后臺端,默認無表前墜,有表前墜的請自行添加 ~~~ `------------------------------ -- toadmin_auth_rule,規則表, ------------------------------ DROP TABLE IF EXISTS `toadmin_auth_rule`; CREATE TABLE `toadmin_auth_rule` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵', `website_id` int(10) NOT NULL DEFAULT '0' COMMENT '站點id,用于多站點,默認0', `name` char(80) CHARACTER SET utf8 NOT NULL DEFAULT '' COMMENT '規則唯一標識', `title` char(20) CHARACTER SET utf8 NOT NULL DEFAULT '' COMMENT '規則中文名稱', `type` tinyint(1) NOT NULL DEFAULT '1' COMMENT '在think_auth_rule 表中定義一條規則時,如果type為1, condition字段就可以定義規則表達式。 如定義{score}>5 and {score}<100 表示用戶的分數在5-100之間時這條規則才會通過。', `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '狀態:為1正常,為0禁用', `condition` char(100) CHARACTER SET utf8 NOT NULL DEFAULT '' COMMENT '規則表達式,為空表示存在就驗證,不為空表示按照條件驗證', `pid` int(8) NOT NULL COMMENT '父級ID', `front` varchar(255) CHARACTER SET utf8 NOT NULL COMMENT '前端標示,前端可以根據這個來判斷是否顯示按鈕', `menu` tinyint(1) NOT NULL DEFAULT '0' COMMENT '菜單類型,0系統,1導航菜單,2功能按鈕', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '最后修改時間', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '添加時間', PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `name` (`website_id`,`name`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; ------------------------------ -- toadmin_auth_group 用戶組表, ------------------------------ DROP TABLE IF EXISTS `toadmin_auth_group`; CREATE TABLE `toadmin_auth_group` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵', `website_id` int(10) NOT NULL DEFAULT '0' COMMENT '站點id,用于多站點,默認0', `title` char(100) NOT NULL DEFAULT '' COMMENT '用戶組中文名稱', `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '狀態:為1正常,為0禁用', `rules` varchar(600) NOT NULL DEFAULT '' COMMENT '用戶組擁有的規則id, 多個規則","隔開', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '最后修改時間', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '添加時間', PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; ------------------------------ -- toadmin_auth_group_access 用戶組明細表, ------------------------------ DROP TABLE IF EXISTS `toadmin_auth_group_access`; CREATE TABLE `toadmin_auth_group_access` ( `uid` mediumint(8) unsigned NOT NULL COMMENT '用戶id', `group_id` mediumint(8) unsigned NOT NULL COMMENT '用戶組id', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '最后修改時間', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '添加時間', UNIQUE KEY `uid_group_id` (`uid`,`group_id`) USING BTREE, KEY `uid` (`uid`) USING BTREE, KEY `group_id` (`group_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; ------------------------------ -- toadmin_auth_user 用戶賬號表, ------------------------------ DROP TABLE IF EXISTS `toadmin_auth_user`; CREATE TABLE `toadmin_auth_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `website_id` int(10) NOT NULL DEFAULT '0' COMMENT '站點id,用于多站點,默認0', `name` varchar(20) NOT NULL COMMENT '姓名', `account` varchar(20) NOT NULL COMMENT '用戶名', `password` varchar(32) NOT NULL COMMENT '用戶密碼', `email` varchar(255) NOT NULL COMMENT '郵箱', `tel` varchar(11) NOT NULL COMMENT '電話', `department` varchar(255) NOT NULL COMMENT '部門', `position` varchar(255) NOT NULL COMMENT '職位', `status` int(1) NOT NULL DEFAULT '1' COMMENT '賬戶狀態', `is_delete` tinyint(1) DEFAULT '0' COMMENT '是否刪除 1刪除 0未刪除', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '最后修改時間', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '添加時間', PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `username` (`website_id`,`account`,`password`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; ------------------------------ -- toadmin_auth_log 操作日志, ------------------------------ DROP TABLE IF EXISTS `toadmin_auth_log`; CREATE TABLE `toadmin_auth_log` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增id', `website_id` int(10) NOT NULL DEFAULT '0' COMMENT '站點id,用于多站點,默認0', `userid` varchar(50) NOT NULL COMMENT '用戶賬號', `name` varchar(255) DEFAULT NULL COMMENT '用戶名', `source` varchar(255) NOT NULL COMMENT '來源', `route` varchar(100) DEFAULT NULL COMMENT '路由', `operation` varchar(255) DEFAULT NULL COMMENT '動作', `param` json DEFAULT NULL COMMENT '請求參數', `ip` varchar(16) DEFAULT NULL COMMENT 'ip', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間', PRIMARY KEY (`id`) USING BTREE, KEY `userid` (`website_id`,`userid`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; ~~~ ## 中間件驗證使用,中間件 ~~~ ric\auth\middleware\Auth::class 可以在config/middleware.php 中添加一條別名記錄 'auth' => ric\auth\middleware\Auth::class, 例如路由: Route::get('/', 'index/controller/Index/index'); 使用后為: Route::get('/', 'index/controller/Index/index')->middleware(auth,['admin','login']); 第一個參數:必填參數,用于標示是調用哪個端,對應config/auth.php 配置中的一維鍵 第二個參數:選填,用于標示是否使用auth權限驗證或者登錄退出,login登錄、logout退出、getinfo獲取登錄用戶信息、log記錄日志信息、getrule獲取所有權限列表 其中,login、logout成功時,會自動記錄日志信息,其它需要配置第二個參數時才會記錄日志信息到toadmin_auth_log表 ~~~ ## [](https://gitee.com/tojeekup/thinkphp6-auth#%E5%86%85%E7%BD%AE%E6%96%B9%E6%B3%95)內置方法 本包內置了,用戶、權限、用戶組等增刪改查方法,詳情查看 /vendor/ric/thinkphp6-auth/Auth.php類 如:獲取用戶組: ~~~ /** * 用戶組列表 */ public function getGroupAll($current_page,$per_page) { $list = Db::table($this->config['auth_group']) ->where([])->withoutField('password')->paginate([ 'list_rows'=> $per_page?:10, //每頁數量 'var_page' => 'page', //分頁變量 'page' => $current_page?:1, //當前頁面 ]); return $list->toArray(); } ~~~ 在路由中例子為: ~~~ Route::post('auth/getGroupAll', 'Auth/getGroupAll')->middleware('auth',['admin']); ~~~ 在自己控制器中的調用方式例子為: ~~~ /** * @title 獲取用戶組列表 * @desc 用戶組列表 * @author Ric * @version 1.0 * * @param int $current_page 1 分頁數,指定獲取第幾頁的數據 require_分頁數不能為空.number * @param int $per_page 10 分頁大小,指定分頁大小 require_分頁大小不能為空.number * * @return int id 1212 * @return int website_id 445 站點id,用于多站點,默認0 * @return char title 55 用戶組中文名稱 * @return tinyint status 473 狀態:為1正常,為0禁用 * @return varchar rules 579 用戶組擁有的規則id, 多個規則","隔開 * @return datetime create_time 255 最后修改時間 * @return datetime update_time 533 添加時間 */ public function getGroupAll() { //獲取參數 $data = request()->param(); $list = request()->middleware('auth')->getGroupAll($data['current_page'], $data['per_page']); return totrue($list); } ~~~ 通過request()->middleware('auth') 來直接調用該包的類 ## [](https://gitee.com/tojeekup/thinkphp6-auth#%E5%BB%BA%E8%AE%AE)建議 toadmin\_auth\_rule 中規則按頁面結構進行創建,共用的部分統一放base中 比如 base 系統共用 -- 上傳 website 站點管理頁面,一級菜單 -- 查看信息 查看站點信息 -- 修改信息 修改站點信息 -- 添加信息 添加站點信息 通過中間件定義,可以獲得用戶所屬的所有用戶組,方便我們在網站上面顯示。 Auth類還可以按用戶屬性進行判斷權限, 比如 按照用戶積分進行判斷, 假設我們的用戶表 (admin\_members) 有字段 score 記錄了用戶積分。 我在規則表添加規則時,定義規則表的condition 字段,condition字段是規則條件,默認為空 表示沒有附加條件,用戶組中只有規則 就通過認證。 如果定義了 condition字段,用戶組中有規則不一定能通過認證,程序還會判斷是否滿足附加條件。 比如我們添加幾條規則: > `name`字段:grade1`condition`字段:{score}<100 > `name`字段:grade2`condition`字段:{score}>100 and {score}<200 > `name`字段:grade3`condition`字段:{score}>200 and {score}<300 這里`{score}`表示`admin_members`表 中字段`score`的值。 那么這時候 > auth?\>check(′grade1′,uid)是判斷用戶積分是不是0?100auth?\>check(′grade1′,uid)是判斷用戶積分是不是0?100auth->check('grade2', uid) 判斷用戶積分是不是在100-200 > $auth->check('grade3', uid) 判斷用戶積分是不是在200-300 ## [](https://gitee.com/tojeekup/thinkphp6-auth#json%E8%BF%94%E5%9B%9E%E8%AF%B4%E6%98%8E)json返回說明 該應用內置了兩個json輸出函數,通過這兩個函數可以輸出統一格式的json,格式如下: ~~~ { "status": '狀態碼', "message": "消息提示", "data": '數據內容' } ~~~ ~~~ /** * 返回json信息 * @param string $status 當前錯誤狀態 * @param string $message 返回錯誤信息前追加內容,默認為空 */ function tofalse($status,$message=''){ try { $data = tocode(100,$e->getMessage()); return json($data); } catch (\Exception $e) { return json(tocode(-1,$e->getMessage())); } } ~~~ ~~~ /** * 返回操作成功json信息 * @param array $object 當前返回對象 * @param string $special 特殊返回對象處理 有類型:select */ function totrue($object,$message=''){ try { $data = tocode(100,$e->getMessage()); $data['data'] = $object; ob_clean(); return json($data); } catch (\Exception $e) { return json(tocode(-1,$e->getMessage())); } } ~~~ ### [](https://gitee.com/tojeekup/thinkphp6-auth#apirpc%E5%87%BD%E6%95%B0%E8%AF%B4%E6%98%8E)api、rpc函數說明 > thinkphp6 取消了action 跨應用調用類,rpc函數即為該函數的替代品,可以實現,跨應用、跨目錄調用 例: rpc: 第一個參數為類名,填寫完整的,方便ide調整,第二個參數為方法名,第三個參數為傳值 ~~~ $isexist= rpc('app\admin\logic\authadmin\UserLogic', 'exist_account', [$account]); ~~~ api: 第一個參數為類名,第一個參數為傳值,其中$data 數據是對應形式,鍵和api文件定義的需要一直,會根據api文件 的定義自動做數據效驗。 ~~~ $data = [ 'website_id' => $website_id, ]; $webinfo = api('app\website\api\config\Info',$data); ~~~ app\\website\\api\\config\\Info.php 文件例子 ~~~ <?php namespace app\website\api\config; use think\Validate; final class Info extends Validate { public $apiDescription = '獲取站點配置詳情'; //API字段表,調用時,會自動根據這個設置來進行數據驗證 public $params = [ 'website_id' => ['valid'=>'require.站點ID不能為空|number', 'title'=>'站點id', 'desc'=>'用于區分站點'], ]; //處理數據,創建驗證器 public function __construct(){ list($this->rule,$this->message) = getValidate($this->params); parent::__construct(); } /** * 詳情,其中參數名稱要和$params中定義的一致 */ public function api($website_id) { return rpc('app\website\logic\WebConfig', 'getWebConfigFind', [$website_id]); } } ~~~ > 在開發時,建議采用領域應用模式開發,即每個應用,通過api提供接口,對其它應用對接,然后api接口通過rpc方法處理 內部領域內容,一個應用即為一個領域。博主的目錄結構如下,僅供參考: ~~~ app -- website 站點管理應用 (該應用提供站點管理服務,對平臺內部,不設置路由,不直接對外提供接口,核心api、logic、dao三層) -- api 對平臺提供api服務,通過rpc調用自身的logic和dao層,進行業務處理,一個文件即一個接口 -- config 站點配置信息 -- Add.php 添加站點配置信息 -- Info.php 獲取站點配置信息 -- logic 業務處理 -- dao 數據處理 -- toadmin 后臺平臺api (該應用為后臺平臺提供api接口,設置路由,供前端調用,編寫頁面,核心controller,無其它) -- controller 控制器,根據需要通過api函數調用 website站點的api 接口,獲取信息,返回數據 -- topc pc端平臺api (該應用為pc端提供api接口,設置路由,供前端調用,編寫頁面,核心controller,無其它) -- controller 控制器,根據需要通過api函數調用 website站點的api 接口,獲取信息,返回數據 ~~~ ## [](https://gitee.com/tojeekup/thinkphp6-auth#%E8%AF%B4%E6%98%8E)說明 為啥api是一個接口一個文件嗯? 1、方便管理 2、后續會提供自動生產api文檔,避免通用的功能不同人,或者時間久了維護時,拼命的寫相同功能的方法,導致方法冗余嚴重,越來越難維護 3、為后續其它應用做準備 # [](https://gitee.com/tojeekup/thinkphp6-auth#%E6%9B%B4%E6%96%B0%E6%97%A5%E5%BF%97)更新日志 > 20210313 v1.0.39 * 升級多website模式下,路由權限表需要重復復制填寫問題,適用bbc網站,商家端等類似場景,配置項實現 > 20200706 v1.0.35 * 升級了登陸接口,可進行中間件進行小程序自動登陸 > 20191012 v1.0.31 * 中間件調整,src/middleware/Auth.php中31行,獲取站點字段參數由website\_id調整為base\_website\_id,以及獲取參數與獲取中間件調換位置。 > 20190912 v1.0.7 * 更新TP6 升級session導致的部分方法失效問題 https://gitee.com/tojeekup/thinkphp6-auth
                  <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>

                              哎呀哎呀视频在线观看