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

多層Route::group,中間件順序反了

ric

問題描述

"name": "workerman/webman-framework",
"version": "v1.5.8",

多層Route::group,中間件規(guī)則應(yīng)該是:
全局中間件 -》 應(yīng)用中間件 -》 最外層 Route::group中間件 -》里層Route::group中間件 -》 Route::post等具體路由中間件

但實際的執(zhí)行情況是:
全局中間件 -》 應(yīng)用中間件 -》 Route::post等具體路由中間件 -》里層Route::group中間件 -》 最外層 Route::group中間件

也就是通過路由文件上配置的中間件執(zhí)行順序反過來了

程序代碼或配置

 Route::group('/toadmin', function () {
    //權(quán)限相關(guān)模塊
    Route::group('/auth', function () {
        //登錄
        Route::post('/login', [app\toadmin\controller\Index::class, 'index'])->middleware([new app\common\middleware\Auth(['toadmin', 'login'])]);
    });

})->middleware([new app\common\middleware\Decryption(['toadmin'])]);

上面執(zhí)行 /toadmin/auth/login 本意是先Decryption,然后Auth
執(zhí)行結(jié)果是先Auth然后再到Decryption了

重現(xiàn)問題的步驟

寫個多層路由中間件即可復(fù)習(xí)

操作系統(tǒng)環(huán)境及workerman/webman等具體版本

"name": "workerman/webman-framework",
"version": "v1.5.8",

##############處理################
vendor/workerman/webman-framework/src/App.php
219行 $routeMiddlewares = array_reverse($route->getMiddleware());

這里進(jìn)行了反轉(zhuǎn),其實是不需要的,應(yīng)該改為$routeMiddlewares = $route->getMiddleware();

執(zhí)行順序是倒過來的,
$middlewares = array_merge($middlewares, Middleware::getMiddleware($plugin, $app, $withGlobalMiddleware));

可以看出,合并全局和應(yīng)用中間件的時候,是添加在數(shù)組后的

1273 3 1
3個回答

wocall

研究的真深

  • ric 2023-09-11

    剛好用到,結(jié)果出現(xiàn)的預(yù)料外的情況而已

  • ric 2023-09-11

    @walkor 大佬看下,確認(rèn)的話,看看能否修復(fù)下,遷移的時候剛好用到

PHP甩JAVA一條街

意思是老大寫錯代碼了嗎

  • ric 2023-09-11

    估計是升級框架的時候沒有改到

walkor 打賞

確實反了,感謝反饋。

  • walkor 2023-09-11

    修復(fù)了,執(zhí)行
    composer require workerman/webman-framework ^1.5.9
    升級

  • ric 2023-09-11

    ??????

年代過于久遠(yuǎn),無法發(fā)表回答
??