在 Laravel 中不处于调试模式时如何阻止某些路由?

How do I block certain routes when not in Debug Mode in Laravel?

有没有办法让 APP_DEBUG 在 Laravel 8 中独占?

我可以在 PreventRequestsDuringMaintenance 中间件异常列表中设置路由。 但这仅适用于维护模式开启时。

我知道如果调试模式打开,我可以简单地在路由上执行 abort(403),但我使用的是 Laravel Web Console 库,它在执行命令时与它自己的路由通信。所以我需要在调试模式下严格阻止对该路由的任何请求。

我想在不处于调试模式时阻止某些路由。 Laravel 有这样的选项吗?还是我需要第三方库?

正如 James 所建议的那样,我修改了中间件并注册了一个全局中间件,以便在任何 uri 与黑名单中的一个匹配时中止 403。

protected $middleware = [
    ...
    // allows blocking some requests when debug mode is off
    \App\Http\Middleware\PreventRequestsDuringProduction::class,
];

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

class PreventRequestsDuringProduction
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle(Request $request, Closure $next)
    {
        $blacklist = [
            'console',
            'laravelwebconsole/execute'
        ];
        $uri = Route::getRoutes()->match($request)->uri;
        
        if(\in_array($uri, $blacklist) && !env('APP_DEBUG')) {
            abort(403);
        }
        
        return $next($request);
    }
}