{"id":803,"date":"2025-06-12T00:06:03","date_gmt":"2025-06-11T16:06:03","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/laravel\/803.html"},"modified":"2025-06-12T00:06:03","modified_gmt":"2025-06-11T16:06:03","slug":"%e5%a6%82%e4%bd%95%e5%9c%a8laravel%e4%b8%ad%e5%81%9c%e6%ad%a2%e4%b8%ad%e9%97%b4%e4%bb%b6","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/803.html","title":{"rendered":"\u5982\u4f55\u5728Laravel\u4e2d\u505c\u6b62\u4e2d\u95f4\u4ef6"},"content":{"rendered":"<div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--1\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/dyA-1-400x300.jpg\" alt=\"Bug&#32534;&#35793;&#29422;\" class=\"wp-image-1842\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">Bug&#32534;&#35793;&#29422;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#22312; Laravel &#20013;&#65292;&#20320;&#21487;&#20197;&#36890;&#36807;&#22810;&#31181;&#26041;&#24335;&#20572;&#27490;&#20013;&#38388;&#20214;&#12290;&#20197;&#19979;&#26159;&#20960;&#31181;&#24120;&#35265;&#30340;&#26041;&#27861;&#65306;<\/p>\n<h3>1. &#20351;&#29992; <code>app\/Http\/Middleware<\/code> &#30446;&#24405;&#19979;&#30340;&#20013;&#38388;&#20214;&#31867;<\/h3>\n<p>&#22914;&#26524;&#20320;&#26377;&#19968;&#20010;&#33258;&#23450;&#20041;&#30340;&#20013;&#38388;&#20214;&#31867;&#65292;&#24182;&#19988;&#24819;&#35201;&#20572;&#27490;&#23427;&#65292;&#21487;&#20197;&#23558;&#20854;&#28155;&#21152;&#21040; <code>app\/Http\/Middleware<\/code> &#30446;&#24405;&#19979;&#12290;<\/p>\n<pre><code class=\"language-php\">\/\/ app\/Http\/Middleware\/StopMiddleware.php\nnamespace AppHttpMiddleware;\n\nuse Closure;\nuse IlluminateSupportFacadesApp;\n\nclass StopMiddleware\n{\n    public function handle($request, Closure $next)\n    {\n        \/\/ &#36825;&#37324;&#21487;&#20197;&#28155;&#21152;&#19968;&#20123;&#36923;&#36753;&#26469;&#20915;&#23450;&#26159;&#21542;&#20572;&#27490;&#20013;&#38388;&#20214;\n        if (condition) {\n            return response()-&gt;json(['message' =&gt; 'Middleware stopped'], 200);\n        }\n\n        return $next($request);\n    }\n}<\/code><\/pre>\n<p>&#28982;&#21518;&#22312;&#36335;&#30001;&#25991;&#20214;&#20013;&#27880;&#20876;&#36825;&#20010;&#20013;&#38388;&#20214;&#65306;<\/p>\n<pre><code class=\"language-php\">\/\/ routes\/web.php\nRoute::get('\/example', function () {\n    return view('example');\n})-&gt;middleware('StopMiddleware');<\/code><\/pre>\n<h3>2. &#20351;&#29992; <code>app\/Http\/Kernel.php<\/code> &#25991;&#20214;&#20013;&#30340; <code>before<\/code> &#21644; <code>after<\/code> &#26041;&#27861;<\/h3>\n<p>&#20320;&#20063;&#21487;&#20197;&#22312; <code>app\/Http\/Kernel.php<\/code> &#25991;&#20214;&#20013;&#20351;&#29992; <code>before<\/code> &#21644; <code>after<\/code> &#26041;&#27861;&#26469;&#25511;&#21046;&#20013;&#38388;&#20214;&#30340;&#25191;&#34892;&#39034;&#24207;&#12290;<\/p>\n<pre><code class=\"language-php\">\/\/ app\/Http\/Kernel.php\nprotected $routeMiddleware = [\n    \/\/ &#20854;&#20182;&#20013;&#38388;&#20214;...\n];\n\nprotected $middlewareGroups = [\n    'web' =&gt; [\n        \/\/ &#20854;&#20182;&#20013;&#38388;&#20214;...\n        AppHttpMiddlewareStopMiddleware::class,\n    ],\n];<\/code><\/pre>\n<h3>3. &#20351;&#29992; <code>IlluminateContractsRoutingMiddleware<\/code> &#25509;&#21475;<\/h3>\n<p>&#22914;&#26524;&#20320;&#38656;&#35201;&#26356;&#28789;&#27963;&#22320;&#25511;&#21046;&#20013;&#38388;&#20214;&#30340;&#25191;&#34892;&#65292;&#21487;&#20197;&#23454;&#29616; <code>IlluminateContractsRoutingMiddleware<\/code> &#25509;&#21475;&#12290;<\/p>\n<pre><code class=\"language-php\">\/\/ app\/Http\/Middleware\/CustomMiddleware.php\nnamespace AppHttpMiddleware;\n\nuse Closure;\nuse IlluminateSupportFacadesApp;\n\nclass CustomMiddleware implements Middleware\n{\n    public function handle($request, Closure $next)\n    {\n        \/\/ &#36825;&#37324;&#21487;&#20197;&#28155;&#21152;&#19968;&#20123;&#36923;&#36753;&#26469;&#20915;&#23450;&#26159;&#21542;&#20572;&#27490;&#20013;&#38388;&#20214;\n        if (condition) {\n            return response()-&gt;json(['message' =&gt; 'Middleware stopped'], 200);\n        }\n\n        return $next($request);\n    }\n\n    public function terminate(Request $request, Response $response)\n    {\n        \/\/ &#36825;&#37324;&#21487;&#20197;&#28155;&#21152;&#19968;&#20123;&#36923;&#36753;&#26469;&#22788;&#29702;&#35831;&#27714;&#32467;&#26463;&#26102;&#30340;&#25805;&#20316;\n    }\n}<\/code><\/pre>\n<p>&#28982;&#21518;&#22312;&#36335;&#30001;&#25991;&#20214;&#20013;&#27880;&#20876;&#36825;&#20010;&#20013;&#38388;&#20214;&#65306;<\/p>\n<pre><code class=\"language-php\">\/\/ routes\/web.php\nRoute::get('\/example', function () {\n    return view('example');\n})-&gt;middleware(new CustomMiddleware());<\/code><\/pre>\n<h3>&#31034;&#20363;&#20195;&#30721;&#30456;&#20851;&#27493;&#39588;<\/h3>\n<p>&#20551;&#35774;&#25105;&#20204;&#26377;&#19968;&#20010;&#31616;&#21333;&#30340;&#20013;&#38388;&#20214; <code>MyMiddleware<\/code>&#65292;&#24182;&#24076;&#26395;&#22312;&#26576;&#20010;&#29305;&#23450;&#26465;&#20214;&#19979;&#20572;&#27490;&#23427;&#12290;<\/p>\n<ol>\n<li>&#21019;&#24314;&#20013;&#38388;&#20214;&#31867;&#65306;<\/li>\n<\/ol>\n<pre><code class=\"language-php\">\/\/ app\/Http\/Middleware\/MyMiddleware.php\nnamespace AppHttpMiddleware;\n\nuse Closure;\nuse IlluminateSupportFacadesApp;\n\nclass MyMiddleware\n{\n    public function handle($request, Closure $next)\n    {\n        \/\/ &#36825;&#37324;&#21487;&#20197;&#28155;&#21152;&#19968;&#20123;&#36923;&#36753;&#26469;&#20915;&#23450;&#26159;&#21542;&#20572;&#27490;&#20013;&#38388;&#20214;\n        if ($someCondition) {\n            return response()-&gt;json(['message' =&gt; 'Middleware stopped'], 200);\n        }\n\n        return $next($request);\n    }\n}<\/code><\/pre>\n<ol start=\"2\">\n<li>&#27880;&#20876;&#20013;&#38388;&#20214;&#65306;<\/li>\n<\/ol>\n<pre><code class=\"language-php\">\/\/ app\/Http\/Kernel.php\nprotected $routeMiddleware = [\n    'my.middleware' =&gt; AppHttpMiddlewareMyMiddleware::class,\n];<\/code><\/pre>\n<ol start=\"3\">\n<li>&#22312;&#36335;&#30001;&#25991;&#20214;&#20013;&#20351;&#29992;&#20013;&#38388;&#20214;&#65306;<\/li>\n<\/ol>\n<pre><code class=\"language-php\">\/\/ routes\/web.php\nRoute::get('\/example', function () {\n    return view('example');\n})-&gt;middleware('my.middleware');<\/code><\/pre>\n<p>&#36890;&#36807;&#36825;&#20123;&#26041;&#27861;&#65292;&#20320;&#21487;&#20197;&#22312; Laravel &#20013;&#26377;&#25928;&#22320;&#25511;&#21046;&#20013;&#38388;&#20214;&#30340;&#25191;&#34892;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--2\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/zp-400x300.jpg\" alt=\"&#40657;&#26495;Bug&#35762;&#24072;\" class=\"wp-image-1849\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#40657;&#26495;Bug&#35762;&#24072;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<body><h2>&#20171;&#32461;<\/h2><p>Laravel&#65292;&#19968;&#20010;&#21151;&#33021;&#24378;&#22823;&#30340;PHP&#26694;&#26550;&#65292;&#33258;&#24102;&#35768;&#22810;&#20869;&#32622;&#29305;&#24615;&#31616;&#21270;&#20102;Web&#24212;&#29992;&#31243;&#24207;&#30340;&#24320;&#21457;&#12290;&#20854;&#20013;&#19968;&#31181;&#36807;&#28388;&#26426;&#21046;&#21483;&#20570;&#20013;&#38388;&#20214;&mdash;&mdash;&#19968;&#31181;&#22788;&#29702;HTTP&#35831;&#27714;&#36827;&#20837;&#24212;&#29992;&#30340;&#31579;&#36873;&#26426;&#21046;&#12290;&#22312;Laravel&#20013;&#65292;&#19981;&#20165;&#21487;&#20197;&#22312;&#35831;&#27714;&#34987;&#25191;&#34892;&#20043;&#21069;&#25191;&#34892;&#25805;&#20316;&#65292;&#36824;&#21487;&#20197;&#22312;&#21709;&#24212;&#34987;&#27983;&#35272;&#22120;&#21457;&#36865;&#20043;&#21518;&#25191;&#34892;&#25805;&#20316;&#65292;&#36825;&#20415;&#26159;&#25105;&#20204;&#25152;&#35828;&#30340;&#21487;&#32456;&#27490;&#20013;&#38388;&#20214;&#12290;<\/p><p>&#26412;&#25945;&#31243;&#23558;&#25351;&#23548;&#24744;&#22312;&#24744;&#30340;Laravel&#24212;&#29992;&#31243;&#24207;&#20013;&#21019;&#24314;&#21644;&#20351;&#29992;&#21487;&#32456;&#27490;&#30340;&#20013;&#38388;&#20214;&#12290;&#25105;&#20204;&#23558;&#20174;&#22522;&#30784;&#30693;&#35782;&#24320;&#22987;&#65292;&#36880;&#27493;&#36807;&#28193;&#21040;&#26356;&#39640;&#32423;&#30340;&#23454;&#29616;&#26041;&#27861;&#65292;&#21516;&#26102;&#25552;&#20379;&#23454;&#38469;&#31034;&#20363;&#21644;&#39044;&#26399;&#36755;&#20986;&#20197;&#20379;&#21442;&#32771;&#12290;<\/p><h2>&#29702;&#35299;&#20013;&#38388;&#20214;&#32456;&#27490;<\/h2><p>&#20013;&#38388;&#20214;&#32456;&#27490;&#20801;&#35768;&#20320;&#22312;&#21709;&#24212;&#23458;&#25143;&#31471;&#20043;&#21518;&#25191;&#34892;&#20219;&#21153;&#12290;&#20026;&#20160;&#20040;&#36825;&#21487;&#33021;&#26377;&#29992;&#65311;&#23427;&#20801;&#35768;&#24744;&#22312;&#29992;&#25143;&#25910;&#21040;&#21709;&#24212;&#21518;&#24310;&#36831;&#26114;&#36149;&#30340;&#20219;&#21153;&#65292;&#20174;&#32780;&#25552;&#39640;&#24212;&#29992;&#31243;&#24207;&#30340;&#24863;&#30693;&#24615;&#33021;&#12290;&#27492;&#31867;&#20219;&#21153;&#21253;&#25324;&#26085;&#24535;&#35760;&#24405;&#12289;&#21457;&#36865;&#30005;&#23376;&#37038;&#20214;&#25110;&#25191;&#34892;&#21508;&#31181;&#28165;&#29702;&#25805;&#20316;&#12290;<\/p><h2>&#21019;&#24314;&#22522;&#26412;&#21487;&#32456;&#27490;&#30340;&#20013;&#38388;&#20214;<\/h2><pre><code>&lt;?php\r\n\r\nnamespace AppHttpMiddleware;\r\n\r\nuse Closure;\r\n\r\nclass TaskTerminator\r\n{\r\n    public function handle($request, Closure $next)\r\n    {\r\n        \/\/ Perform action before the request is handled by the application\r\n        return $next($request);\r\n    }\r\n\r\n    public function terminate($request, $response)\r\n    {\r\n        \/\/ Perform action after the response is sent to the browser\r\n    }\r\n}\r\n<\/code><\/pre><p>&#22312;&#19978;&#36848;&#20363;&#23376;&#20013;&#65292;&#25105;&#20204;&#21019;&#24314;&#20102;&#19968;&#20010;&#21517;&#20026;&#31616;&#21333;&#21487;&#32456;&#27490;&#20013;&#38388;&#20214;&#31867;&#30340;&#31616;&#21333;&#20013;&#38388;&#20214;&#31867;&#12290;<code>TaskTerminator<\/code>&#23545;&#19981;&#36215;&#65292;&#25105;&#19981;&#26126;&#30333;&#20320;&#30340;&#24847;&#24605;&#12290;<code>terminate<\/code>&#26041;&#27861;&#20250;&#22312;&#21709;&#24212;&#21457;&#36865;&#21040;&#23458;&#25143;&#31471;&#20043;&#21518;&#25191;&#34892;&#20195;&#30721;&#12290;<\/p><h2>&#27880;&#20876;&#21487;&#32456;&#27490;&#20013;&#38388;&#20214;<\/h2><p>&#20026;&#20102;&#20351;Laravel&#20102;&#35299;&#21487;&#32456;&#27490;&#30340;&#20013;&#38388;&#20214;&#65292;&#20320;&#38656;&#35201;&#22312;&#24212;&#29992;&#30340;&#20840;&#23616;&#25110;&#36335;&#30001;&#20013;&#38388;&#20214;&#26632;&#20869;&#27880;&#20876;&#23427;&#12290;<\/p><p>&#20840;&#29699;&#20013;&#38388;&#20214;&#65306;<\/p><pre><code>protected $middleware = [\r\n    \/\/ ...\r\n\r\n    AppHttpMiddlewareTaskTerminator::class,\r\n\r\n    \/\/ other middleware can be listed here\r\n];\r\n<\/code><\/pre><p>&#36335;&#30001;&#20013;&#38388;&#20214;&#65306;<\/p><pre><code>protected $middleware = [\r\n    \/\/ ...\r\n\r\n    AppHttpMiddlewareTaskTerminator::class,\r\n\r\n    \/\/ other middleware can be listed here\r\n];\r\n<\/code><\/pre><h2>&#23454;&#26045;&#19968;&#20010;&#31034;&#20363;<\/h2><p>&#35831;&#24819;&#35937;&#24744;&#24076;&#26395;&#35760;&#24405;&#35831;&#27714;&#30340;&#25345;&#32493;&#26102;&#38388;&#12290;<code>terminate<\/code>&#26041;&#27861;&#21487;&#29992;&#20110;&#35745;&#31639;&#20174;&#35831;&#27714;&#25509;&#25910;&#26102;&#21051;&#21040;&#21709;&#24212;&#36820;&#22238;&#23458;&#25143;&#31471;&#20043;&#21518;&#30340;&#26102;&#38388;&#12290;<\/p><pre><code>&lt;?php\r\n\r\n\/\/ ...\r\n\r\nclass TaskTerminator\r\n{\r\n    \/\/ ...\r\n\r\n    protected $startTime;\r\n\r\n    public function __construct()\r\n    {\r\n        $this-&gt;startTime = microtime(true);\r\n    }\r\n\r\n    public function handle($request, Closure $next)\r\n    {\r\n        \/\/ Handling the request\r\n        return $next($request);\r\n    }\r\n\r\n    public function terminate($request, $response)\r\n    {\r\n        $endTime = microtime(true);\r\n        Log::info('Request duration: ' . ($endTime - $this-&gt;startTime));\r\n    }\r\n\r\n    \/\/ ...\r\n}\r\n<\/code><\/pre><p>&#22312;&#19978;&#36848;&#29255;&#27573;&#20013;&#65292;&#25105;&#20204;&#22312;&#26500;&#24314;&#20013;&#38388;&#20214;&#26102;&#23384;&#20648;&#36215;&#22987;&#26102;&#38388;&#12290;&#24403;&#35831;&#27714;&#36890;&#36807;&#24212;&#29992;&#31243;&#24207;&#24182;&#21457;&#36865;&#21709;&#24212;&#21518;&#65292;&#32456;&#27490;&#26041;&#27861;&#35760;&#24405;&#20102;&#25345;&#32493;&#26102;&#38388;&#12290;<\/p><h2>&#20351;&#29992;&#32456;&#32467;&#22120;&#20013;&#38388;&#20214;&#19982;&#38431;&#21015;&#20316;&#19994;<\/h2><p>&#21487;&#32456;&#27490;&#30340;&#20013;&#38388;&#20214;&#22312;&#19982;&#38431;&#21015;&#20316;&#19994;&#32467;&#21512;&#26102;&#20063;&#38750;&#24120;&#26377;&#25928;&#12290;&#20320;&#21487;&#20197;&#36890;&#36807;&#21551;&#21160;&#38431;&#21015;&#20316;&#19994;&#26469;&#25191;&#34892;&#23427;&#12290;<code>terminate<\/code>&#26041;&#27861;&#23558;&#22312;&#21709;&#24212;&#36865;&#36798;&#21518;&#30001;&#24037;&#20154;&#34987;&#25552;&#21462;&#12290;<\/p><pre><code>&lt;?php\r\n\r\n\/\/ ...\r\n\r\nclass TaskTerminator\r\n{\r\n    \/\/ ...\r\n\r\n    public function terminate($request, $response)\r\n    {\r\n        SomeJob::dispatch();\r\n    }\r\n\r\n    \/\/ ...\r\n}\r\n<\/code><\/pre><p>&#23545;&#19981;&#36215;&#65292;&#24744;&#30340;&#28040;&#24687;&#19981;&#22815;&#26126;&#30830;&#65292;&#25105;&#26080;&#27861;&#29702;&#35299;&#24744;&#35201;&#34920;&#36798;&#30340;&#20869;&#23481;&#12290;&#35831;&#37325;&#26032;&#25551;&#36848;&#19968;&#19979;&#24744;&#30340;&#35831;&#27714;&#25110;&#38382;&#39064;&#65292;&#25105;&#20250;&#23613;&#21147;&#20026;&#24744;&#26381;&#21153;&#12290;<code>SomeJob::dispatch()<\/code>&#22914;&#19978;&#25152;&#31034;&#30340;&#26041;&#27861;&#28436;&#31034;&#20102;&#22914;&#20309;&#22312;&#20869;&#37096;&#20174;&#20309;&#22788;&#35843;&#24230;&#20316;&#19994;&#12290;<code>terminate<\/code>&#26041;&#27861;&#12290;&#36825;&#39033;&#24037;&#20316;&#23558;&#22312;&#21518;&#21488;&#22788;&#29702;&#12290;<\/p><h2>&#27979;&#35797;&#21487;&#32456;&#27490;&#20013;&#38388;&#20214;<\/h2><p>&#27979;&#35797;&#20013;&#38388;&#20214;&#33267;&#20851;&#37325;&#35201;&#65292;&#20197;&#30830;&#20445;&#20854;&#34892;&#20026;&#31526;&#21512;&#39044;&#26399;&#12290;&#35201;&#27979;&#35797;&#21487;&#32456;&#27490;&#30340;&#20013;&#38388;&#20214;&#65292;&#20320;&#21487;&#20197;&#27169;&#25311;&#23545;&#24212;&#29992;&#31243;&#24207;&#30340;&#23436;&#25972;HTTP&#35831;&#27714;&#65292;&#24182;&#26029;&#35328;&#21487;&#32456;&#27490;&#30340;&#20219;&#21153;&#24050;&#32463;&#25191;&#34892;&#12290;<\/p><pre><code>\/\/ Example of a test\r\npublic function test_request_duration_is_logged()\r\n{\r\n    \/\/ Simulate a request\r\n    $response = $this-&gt;get('\/some-route');\r\n\r\n    \/\/ Assertions\r\n    Log::shouldReceive('info')\r\n        -&gt;with(Mockery::on(function ($log) {\r\n            return Str::startsWith($log, 'Request duration: ');\r\n        }))\r\n        -&gt;once();\r\n\r\n    $response-&gt;assertStatus(200);\r\n}\r\n<\/code><\/pre><p>&#35813;&#26679;&#26412;&#27979;&#35797;&#30830;&#20445;&#20102;&#21517;&#20026;&ldquo;&#35831;&#27714;&#25345;&#32493;&#26102;&#38388;&#65306;&rdquo;&#30340;&#26085;&#24535;&#26465;&#30446;&#24688;&#22909;&#34987;&#35760;&#24405;&#19968;&#27425;&#12290;<\/p><h2>&#39640;&#32423;&#23454;&#26045;<\/h2><p>&#22312;&#26356;&#39640;&#32423;&#30340;&#22330;&#26223;&#19979;&#65292;&#20320;&#21487;&#33021;&#38656;&#35201;&#26681;&#25454;&#19981;&#21516;&#31867;&#22411;&#30340;&#21709;&#24212;&#26469;&#22788;&#29702;terminate&#26041;&#27861;&#20013;&#30340;&#19981;&#21516;&#24773;&#20917;&#12290;&#20363;&#22914;&#65292;&#20320;&#21487;&#20197;&#26816;&#26597;HTTP&#29366;&#24577;&#30721;&#25110;&#29978;&#33267;&#21709;&#24212;&#30340;&#20869;&#23481;&#65306;<\/p><pre><code>&lt;?php\r\n\r\n\/\/ ...\r\n\r\nclass TaskTerminator\r\n{\r\n    \/\/ ...\r\n\r\n    public function terminate($request, $response)\r\n    {\r\n        if ($response instanceof JsonResponse &amp;&amp; $response-&gt;status() == 200) {\r\n            \/\/ Handle JSON responses with a 200 OK status.\r\n        }\r\n    }\r\n\r\n    \/\/ ...\r\n}\r\n<\/code><\/pre><p>&#22312;&#19978;&#36848;&#20195;&#30721;&#20013;&#65292;&#25105;&#20204;&#20351;&#29992;&#23454;&#20363;&#26816;&#26597;&#26469;&#30830;&#23450;&#21709;&#24212;&#26159;&#21542;&#20026;<code>JsonResponse<\/code>&#22914;&#26524;&#23427;&#30340;&#29366;&#24577;&#30721;&#20026;200&#65292;&#25105;&#20204;&#23601;&#26377;&#26426;&#20250;&#25191;&#34892;&#30456;&#20851;&#30340;&#21709;&#24212;&#21518;&#22788;&#29702;&#36923;&#36753;&#12290;<\/p><h2>&#32467;&#35770;&#12290;<\/h2><p>&#22312;&#26412;&#25945;&#31243;&#20013;&#65292;&#25105;&#20204;&#25506;&#35752;&#20102;Laravel&#30340;&#21487;&#32456;&#27490;&#20013;&#38388;&#20214;&#21151;&#33021;&#65292;&#20174;&#22522;&#26412;&#23454;&#29616;&#21040;&#26356;&#39640;&#32423;&#21035;&#30340;&#23454;&#26045;&#12290;&#35760;&#20303;&#65292;&#34429;&#28982;&#21487;&#32456;&#27490;&#20013;&#38388;&#20214;&#20026;&#23558;&#36739;&#37325;&#30340;&#20219;&#21153;&#25512;&#36831;&#21040;&#29992;&#25143;&#24471;&#21040;&#24555;&#36895;&#21709;&#24212;&#21518;&#25552;&#20379;&#20102;&#24456;&#22909;&#30340;&#26041;&#27861;&#65292;&#20294;&#24517;&#39035;&#30830;&#20445;&#36825;&#20123;&#21518;&#21488;&#25805;&#20316;&#19981;&#20250;&#26174;&#33879;&#24433;&#21709;&#26381;&#21153;&#22120;&#24615;&#33021;&#25110;&#31283;&#23450;&#24615;&#12290;<\/p><\/body>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--3\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/xygcfznnzczhsdmwydzhsmzzzmddnq-400x300.jpg\" alt=\"&#38271;&#24037;&#30721;&#22900;1523\" class=\"wp-image-2906\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#38271;&#24037;&#30721;&#22900;1523<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#35201;&#22312; Laravel &#20013;&#20572;&#27490;&#20013;&#38388;&#20214;&#65292;&#35831;&#25353;&#29031;&#20197;&#19979;&#27493;&#39588;&#25805;&#20316;&#65306;<\/p>\n<ol>\n<li>\n<p>&#39318;&#20808;&#65292;&#30830;&#20445;&#24744;&#30340;&#39033;&#30446;&#24050;&#23433;&#35013;&#20102; Lumen &#24212;&#29992;&#31243;&#24207;&#12290;&#22914;&#26524;&#26410;&#23433;&#35013;&#65292;&#35831;&#20351;&#29992; composer &#23433;&#35013;&#65306;<\/p>\n<pre><code class=\"language-bash\">composer create-project --prefer-dist laravel\/lumen your_project_name<\/code><\/pre>\n<\/li>\n<li>\n<p>&#22312; <code>app\/Providers\/AppServiceProvider.php<\/code> &#25991;&#20214;&#20013;&#25214;&#21040; <code>Kernel<\/code> &#31867;&#65292;&#24182;&#23558;&#20854;&#20462;&#25913;&#20026;&#19981;&#21253;&#21547;&#20219;&#20309;&#20013;&#38388;&#20214;&#12290;<\/p>\n<pre><code class=\"language-php\">\nnamespace AppProviders;<\/code><\/pre>\n<\/li>\n<\/ol>\n<p>use IlluminateSupportFacadesRoute;\nuse IlluminateFoundationSupportProvidersAppServiceProvider as ServiceProvider;<\/p>\n<p>class AppServiceProvider extends ServiceProvider\n{\npublic function boot()\n{\nRoute::middleware(&#8216;auth&#8217;)-&gt;group(function () {\n\/\/ Your application routes go here&#8230;\n});\n}<\/p>\n<pre><code>public function register()\n{\n    $this-&gt;app-&gt;register(IlluminateAuthMiddlewareVerifyCsrfToken::class);\n    $this-&gt;app-&gt;register(IlluminateRoutingMiddlewareSubstituteBindings::class);\n}<\/code><\/pre>\n<p>}<\/p>\n<pre><code>3. &#20445;&#23384;&#26356;&#25913;&#24182;&#36816;&#34892;&#24212;&#29992;&#12290;&#36825;&#23558;&#20351;&#20013;&#38388;&#20214;&#19981;&#20877;&#34987;&#33258;&#21160;&#25191;&#34892;&#12290;\n\n4. &#29616;&#22312;&#65292;&#24744;&#21487;&#20197;&#22312;&#38656;&#35201;&#30340;&#22320;&#26041;&#21462;&#28040;&#20013;&#38388;&#20214;&#12290;&#20363;&#22914;&#65292;&#22312;&#25511;&#21046;&#22120;&#26041;&#27861;&#19978;&#28155;&#21152;&#22914;&#19979;&#27880;&#37322;&#26469;&#31105;&#29992;&#20013;&#38388;&#20214;&#65306;\n```php\npublic function show($id)\n{\n    \/\/ ...\n    $this-&gt;middleware(['no-auth'])-&gt;except('show');\n}<\/code><\/pre>\n<ol start=\"5\">\n<li>&#22914;&#26524;&#38656;&#35201;&#65292;&#24744;&#21487;&#20197;&#33258;&#23450;&#20041;&#20013;&#38388;&#20214;&#31867;&#20197;&#28385;&#36275;&#29305;&#23450;&#38656;&#27714;&#12290;&#20363;&#22914;&#65292;&#22914;&#26524;&#24744;&#24819;&#35201;&#38459;&#27490;&#26576;&#20123;&#35831;&#27714;&#35775;&#38382;&#29305;&#23450;&#30340;&#36164;&#28304;&#65292;&#21487;&#20197;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#20013;&#38388;&#20214;&#31867;&#24182;&#23454;&#29616;&#30456;&#24212;&#30340;&#36923;&#36753;&#65306;<\/li>\n<\/ol>\n<pre><code class=\"language-php\">use Closure;\nuse IlluminateHttpRequest;\n\nclass NoAuthMiddleware implements IlluminateContractsAuthMixinsAuthorizeMiddlewareInterface\n{\n    \/**\n     * Handle an incoming request.\n     *\n     * @param  IlluminateHttpRequest  $request\n     * @return mixed\n     *\/\n    public function handle(Request $request, Closure $next, ...$guards)\n    {\n        return $this-&gt;authorize($request, ...$guards);\n    }\n}<\/code><\/pre>\n<ol start=\"6\">\n<li>&#22312;&#38656;&#35201;&#26102;&#35843;&#29992;&#35813;&#20013;&#38388;&#20214;&#65292;&#22914;&#22312;&#36335;&#30001;&#37197;&#32622;&#20013;&#65306;\n<pre><code class=\"language-php\">Route::get('\/admin', [YourController::class, 'index'])-&gt;middleware('no-auth');<\/code><\/pre><\/li>\n<\/ol>\n<p>&#29616;&#22312;&#65292;&#24403;&#29992;&#25143;&#23581;&#35797;&#35775;&#38382;&#20855;&#26377; <code>admin<\/code> &#36335;&#24452;&#30340;&#25511;&#21046;&#22120;&#26041;&#27861;&#26102;&#65292;&#20182;&#20204;&#24517;&#39035;&#25552;&#20379;&#26377;&#25928;&#30340;&#20973;&#25454;&#25165;&#33021;&#35775;&#38382;&#12290;&#36890;&#36807;&#36825;&#31181;&#26041;&#24335;&#65292;&#24744;&#21487;&#20197;&#26681;&#25454;&#38656;&#35201;&#28789;&#27963;&#22320;&#25511;&#21046;&#21738;&#20123;&#35831;&#27714;&#38656;&#35201;&#35748;&#35777;&#21644;&#25480;&#26435;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#22312; Laravel &#20013;&#65292;&#20320;&#21487;&#20197;&#36890;&#36807;&#22810;&#31181;&#26041;&#24335;&#20572;&#27490;&#20013;&#038;#3..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[44],"tuisongtax":[],"class_list":["post-803","my1js","type-my1js","status-publish","hentry","my1js2nav-laravel"],"acf":{"qian_art_seotitle":"","qian_art_seotitle_source":{"label":"SEO\u6807\u9898","type":"text","formatted_value":""},"qian_art_seokws":"","qian_art_seokws_source":{"label":"SEO\u5173\u952e\u8bcd","type":"text","formatted_value":""},"qian_art_stzhong":"","qian_art_stzhong_source":{"label":"\u4e2d | \u77ed\u6807\u9898","type":"text","formatted_value":""}},"_links":{"self":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js\/803","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js"}],"about":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/types\/my1js"}],"author":[{"embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/users\/1"}],"wp:attachment":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/media?parent=803"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=803"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=803"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=803"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}