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

關(guān)于路由大小寫(xiě)的可以繞過(guò)中間件的問(wèn)題

zjkal?

問(wèn)題描述

不知道算不算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è)置所有路由, 但是比較麻煩.

1142 2 2
2個(gè)回答

damao

小寫(xiě)走的是路由配置,大寫(xiě)走的默認(rèn)路由,沒(méi)問(wèn)題
要么關(guān)閉默認(rèn)路由,要么在config/middleware.php 里給test應(yīng)用設(shè)置路由

  • zjkal? 2023-11-27
    1. 默認(rèn)路由同時(shí)有大小寫(xiě), 這個(gè)才是苦惱的地方. 不管自定義路由用大寫(xiě)還是小寫(xiě), 另一個(gè)總是可以繞過(guò)去.
    2. webman現(xiàn)在的版本不支持給應(yīng)用單獨(dú)設(shè)置路由
six

看了下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)到

  • zjkal? 2023-11-27

    嗯嗯, 哎呀, 這真是個(gè)好辦法, 正則可以忽略大小寫(xiě), 太感謝了 大佬 Onz

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