<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ### 中間件處理登錄流程 * 一、定義中間件 * 二、前置/后置中間件 * 三、注冊中間件 * * 1\. 全局中間件 * 2\. 應用中間件 * 3\. 路由中間件 * 4\. 控制器中間件 * 5\. 內置中間件 * 四、中間件使用 -- 后臺登錄頁面跳轉流程 * * 1\. 創建Auth中間件 * 2\. 注冊應用中間件 # 一、定義中間件 ~~~php <?phpnamespace app\middleware;class Check {public function handle($request, \Closure $next){if ($request->param('name') == 'think') {return redirect('index/think');}return $next($request);} } ~~~ 中間件類可以隨意命名,中間件的入口執行方法必須是`handle`方法,而且第一個參數是`Request`對象,第二個參數是一個`閉包`。 # 二、前置/后置中間件 中間件是在請求具體的操作之前還是之后執行,完全取決于中間件的定義本身。 下面是一個前置行為的中間件: ~~~php <?phpnamespace app\middleware;class Before {public function handle($request, \Closure $next){// 添加中間件執行代碼return $next($request);} } ~~~ 下面是一個后置行為的中間件: ~~~php <?phpnamespace app\middleware;class After {public function handle($request, \Closure $next){$response = $next($request);// 添加中間件執行代碼return $response;} } ~~~ # 三、注冊中間件 新版的中間件分為`全局中間件`、`應用中間件(多應用模式下有效)`、`路由中間件`以及`控制器中間件`四個組。執行順序分別為: > 全局中間件->應用中間件->路由中間件->控制器中間件 ## 1\. 全局中間件 全局中間件在`app`目錄下面`middleware.php`文件中定義,使用下面的方式: ~~~php <?phpreturn [\app\middleware\Auth::class ]; ~~~ 中間件的注冊應該使用完整的類名,如果已經定義了中間件別名(或者分組)則可以直接使用。全局中間件的執行順序就是定義順序。 ## 2\. 應用中間件 如果你使用了多應用模式,則支持應用中間件定義,你可以直接在應用目錄下面增加`middleware.php`文件,定義方式和全局中間件定義一樣,只是只會在該應用下面生效。 ## 3\. 路由中間件 最常用的中間件注冊方式是注冊路由中間件: ~~~php Route::rule('hello/:name','hello')->middleware(\app\middleware\Auth::class); ~~~ 支持注冊多個中間件: ~~~php Route::rule('hello/:name','hello')->middleware([\app\middleware\Auth::class, \app\middleware\Check::class]); ~~~ ## 4\. 控制器中間件 支持為控制器定義中間件,只需要在控制器中定義`middleware`屬性,例如: ~~~php <?php namespace app\controller;class Index {protected $middleware = ['auth'];public function index(){return 'index';}public function hello(){return 'hello';} } ~~~ 當執行index控制器的時候就會調用`auth`中間件,一樣支持使用完整的命名空間定義。 ## 5\. 內置中間件 | 中間件類 | 描述 | | :-- | :-- | | think\\middleware\\AllowCrossDomain | 跨域請求支持 | | think\\middleware\\CheckRequestCache | 請求緩存 | | think\\middleware\\LoadLangPack | 多語言加載 | | think\\middleware\\SessionInit Session | 初始化 | | think\\middleware\\FormTokenCheck | 表單令牌 | 這些內置中間件默認都沒有定義,你可以在應用的`middleware.php`文件中、路由或者控制器中定義這些中間件,如果不需要使用的話,取消定義即可。 # 四、中間件使用 – 后臺登錄頁面跳轉流程 ![在這里插入圖片描述](https://img-blog.csdnimg.cn/20201208210420476.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3p5MTI4MTUzOTYyNg==,size_16,color_FFFFFF,t_70) 當訪問后臺主頁的時候,如果已經登錄(已記錄session)則可以進入注意,否則返回登錄頁面;若訪問后臺登錄頁面,如果已經登錄(已記錄session)則直接跳轉到主頁,否則進入登錄頁面。 ## 1\. 創建Auth中間件 在`admin`應用文件夾創建`middleware`文件夾,創建`Auth.php`中間件文件: ~~~php <?phpnamespace app\admin\middleware; use think\Response;class Auth {public function handle($request, \Closure $next){// 前置中間件if(empty(session(config("admin.session_admin"))) && !preg_match("/login/",$request->pathinfo()) ){return redirect(url('login/index'));}if(!empty(session(config("admin.session_admin"))) && preg_match("/login\/index/",$request->pathinfo())){return redirect(url('index/index'));}$response = $next($request);// 后置中間件return $response;}public function end(Response $response){} } ~~~ `admin.session_admin`是在admin/config文件夾下配置文件定義的: admin/config/admin.php ~~~php <?php return ['session_admin' => 'adminUser' ]; ~~~ ## 2\. 注冊應用中間件 在`admin`應用目錄新建`middleware.php`: ~~~php <?php return [\think\middleware\SessionInit::class,app\admin\middleware\Auth::class ]; ~~~
                  <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>

                              哎呀哎呀视频在线观看