不知道算不算BUG, 通過(guò)路由給控制器的方法設(shè)置中間件, 總是會(huì)有這樣的問(wèn)題, 比如:
//config/route.php
Route::any('/test/user/index', [app\test\controller\UserController::class, 'index'])->middleware(
app\test\middleware\Test::class
);
訪(fǎng)問(wèn) http://localhost:8787/test/user/index 會(huì)正常走中間件,
但是如果把URL里的控制器名稱(chēng)改成大寫(xiě), 訪(fǎng)問(wèn) http://localhost:8787/test/User/index, 就會(huì)繞過(guò)中間件, 直接到控制器了
如果把路由里的User直接改成大寫(xiě), 那么小寫(xiě)的user又可以繞過(guò)中間件.
有啥好解決辦法嗎?
我能想到的就是禁用默認(rèn)路由, 然后自己設(shè)置所有路由, 但是比較麻煩.
看了下fast-route的issue,這種要用正則表達(dá)式
Route::any('/{test:(?i)test}/{user:(?i)user}/{index:(?i)index}',[app\test\controller\UserController::class, 'index'])->middleware(
app\test\middleware\Test::class
);
這樣不區(qū)分大小寫(xiě)了,/test/user/index
/test/User/index
等都能訪(fǎng)問(wèn)到