<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## 插件中間件 插件中間件用于訪問插件前臺、或前臺、后臺時對HTTP請求攔截或過濾。例如你可以使用中間件控制哪些方法需要登錄才能訪問。 <blockquote class="danger"><p>注意:2.1.220220版本暫時不支持控制器中間件,訪問插件前臺可以使用的addonMiddleware事件,該事件監聽所有訪問插件前臺的操作,詳情前往插件事件了解。</p></blockquote> ## 創建中間件 中間件放置于:addons/demo/middleware/ ![](https://img.kancloud.cn/52/f6/52f6f241e0b4d75a4bdc422d00fbc1d4_275x202.png) 示例代碼: ~~~ <?php declare (strict_types=1); namespace addons\demo\middleware; class Login { // handle 為入口執行方法,必須。第一個參數是`Request`對象,第二個參數是一個閉包。 public function handle($request, \Closure $next) { // 判斷session里面有用戶信息,沒有說明沒有登錄,跳轉到登錄頁 if (!$request->session('User')) { return redirect((string)addons_url('login/index')); } return $next($request); } } ~~~ `前置中間件`:寫在請求具體操作前為前置中間件,即:`$next($request);`前,如上面所示 `后置中間件`:執行完請求后為后置中間件,即:`$next($request);`后面 ~~~ <?php declare (strict_types=1); namespace addons\demo\middleware; class Login { // handle 為入口執行方法,必須。第一個參數是`Request`對象,第二個參數是一個閉包。 public function handle($request, \Closure $next) { $response = $next($request); // 需要的操作 ... // 返回響應 return $response; } } ~~~ 中間件傳值到控制器方法 ~~~ <?php declare (strict_types=1); namespace addons\demo\middleware; class Login { // handle 為入口執行方法,必須。第一個參數是`Request`對象,第二個參數是一個閉包。 public function handle($request, \Closure $next) { $request->Demo = 1; // 控制器里面 request()->Demo 即可獲取值 return $next($request); } } ~~~ ## 使用中間件 執行順序分別為: > 插件全局中間件->控制器中間件 ## 插件全局中間件 內置有插件全局中間件,可通過`addonMiddleware`事件來執行。 ## 控制器中間件 控制器中間件在插件控制器里面注冊,如下,定義后訪問Index控制器的任意方法都會經過中間件。 ~~~ <?php namespace addons\demo\controller; use think\addons\Controller; class Index extends Controller { // 控制器中間件 public $middleware = [ \addons\demo\middleware\Login::class ]; public function index() { echo "登錄成功"; } public function login() { echo "登錄頁"; } } ~~~ 使用except/only來設置生效的操作 only 示例 ``` // 控制器中間件 public $middleware = [ \addons\demo\middleware\Login::class=>['only'=>['index','test']] // Login中間僅對index、test方法攔截 ]; ``` except 示例 ``` // 控制器中間件 public $middleware = [ \addons\demo\middleware\Login::class=>['except'=>[''test']] // 除了test方法,其他的所有操作方法都會經過Login中間件 ]; ```
                  <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>

                              哎呀哎呀视频在线观看