{"id":815,"date":"2025-06-12T00:19:45","date_gmt":"2025-06-11T16:19:45","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/laravel\/815.html"},"modified":"2025-06-12T00:19:45","modified_gmt":"2025-06-11T16:19:45","slug":"laravel%ef%bc%9a%e5%a6%82%e4%bd%95%e4%bb%8e%e8%af%b7%e6%b1%82%e5%a4%b4%e4%b8%ad%e6%8f%90%e5%8f%96%e8%ba%ab%e4%bb%bd%e9%aa%8c%e8%af%81%e4%bb%a4%e7%89%8c","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/815.html","title":{"rendered":"Laravel\uff1a\u5982\u4f55\u4ece\u8bf7\u6c42\u5934\u4e2d\u63d0\u53d6\u8eab\u4efd\u9a8c\u8bc1\u4ee4\u724c"},"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;&#20174;&#35831;&#27714;&#22836;&#20013;&#25552;&#21462;&#36523;&#20221;&#39564;&#35777;&#20196;&#29260;&#12290;&#20197;&#19979;&#26159;&#20960;&#31181;&#24120;&#35265;&#30340;&#26041;&#27861;&#65306;<\/p>\n<h3>&#26041;&#27861;&#19968;&#65306;&#20351;&#29992; <code>Request<\/code> &#23545;&#35937;<\/h3>\n<pre><code class=\"language-php\">use IlluminateHttpRequest;\n\npublic function authenticate(Request $request)\n{\n    \/\/ &#20174;&#35831;&#27714;&#22836;&#20013;&#33719;&#21462;&#36523;&#20221;&#39564;&#35777;&#20196;&#29260;\n    $token = $request-&gt;header('Authorization');\n\n    if (!$token) {\n        return response()-&gt;json(['message' =&gt; 'Token not provided'], 401);\n    }\n\n    \/\/ &#26816;&#26597;&#20196;&#29260;&#30340;&#26377;&#25928;&#24615;&#65288;&#36825;&#37324;&#20551;&#35774;&#20320;&#26377;&#19968;&#20010;&#39564;&#35777;&#22120;&#65289;\n    if (!auth()-&gt;attempt(['api_token' =&gt; $token])) {\n        return response()-&gt;json(['message' =&gt; 'Invalid token'], 401);\n    }\n\n    \/\/ &#22914;&#26524;&#20196;&#29260;&#26377;&#25928;&#65292;&#36820;&#22238;&#29992;&#25143;&#20449;&#24687;\n    $user = auth()-&gt;user();\n    return response()-&gt;json($user, 200);\n}<\/code><\/pre>\n<h3>&#26041;&#27861;&#20108;&#65306;&#20351;&#29992; <code>Auth<\/code> facade<\/h3>\n<pre><code class=\"language-php\">use IlluminateSupportFacadesAuth;\n\npublic function authenticate()\n{\n    \/\/ &#20174;&#35831;&#27714;&#22836;&#20013;&#33719;&#21462;&#36523;&#20221;&#39564;&#35777;&#20196;&#29260;\n    $token = request()-&gt;header('Authorization');\n\n    if (!$token) {\n        return response()-&gt;json(['message' =&gt; 'Token not provided'], 401);\n    }\n\n    \/\/ &#20351;&#29992; Auth facade &#36827;&#34892;&#36523;&#20221;&#39564;&#35777;\n    if (Auth::guard('api')-&gt;attempt(['api_token' =&gt; $token])) {\n        \/\/ &#22914;&#26524;&#20196;&#29260;&#26377;&#25928;&#65292;&#36820;&#22238;&#29992;&#25143;&#20449;&#24687;\n        $user = Auth::user();\n        return response()-&gt;json($user, 200);\n    } else {\n        return response()-&gt;json(['message' =&gt; 'Invalid token'], 401);\n    }\n}<\/code><\/pre>\n<h3>&#26041;&#27861;&#19977;&#65306;&#20351;&#29992;&#20013;&#38388;&#20214;<\/h3>\n<p>&#22914;&#26524;&#20320;&#24076;&#26395;&#22312;&#25972;&#20010;&#24212;&#29992;&#31243;&#24207;&#20013;&#37117;&#20351;&#29992;&#30456;&#21516;&#30340;&#39564;&#35777;&#36923;&#36753;&#65292;&#21487;&#20197;&#21019;&#24314;&#19968;&#20010;&#33258;&#23450;&#20041;&#30340;&#20013;&#38388;&#20214;&#12290;<\/p>\n<h4>&#21019;&#24314;&#20013;&#38388;&#20214;<\/h4>\n<pre><code class=\"language-bash\">php artisan make:middleware AuthenticateToken<\/code><\/pre>\n<h4>&#32534;&#36753;&#20013;&#38388;&#20214;&#25991;&#20214;<\/h4>\n<pre><code class=\"language-php\">namespace AppHttpMiddleware;\n\nuse Closure;\nuse IlluminateSupportFacadesAuth;\n\nclass AuthenticateToken\n{\n    public function handle($request, Closure $next)\n    {\n        \/\/ &#20174;&#35831;&#27714;&#22836;&#20013;&#33719;&#21462;&#36523;&#20221;&#39564;&#35777;&#20196;&#29260;\n        $token = $request-&gt;header('Authorization');\n\n        if (!$token) {\n            return response()-&gt;json(['message' =&gt; 'Token not provided'], 401);\n        }\n\n        \/\/ &#20351;&#29992; Auth facade &#36827;&#34892;&#36523;&#20221;&#39564;&#35777;\n        if (Auth::guard('api')-&gt;attempt(['api_token' =&gt; $token])) {\n            \/\/ &#22914;&#26524;&#20196;&#29260;&#26377;&#25928;&#65292;&#32487;&#32493;&#22788;&#29702;&#35831;&#27714;\n            return $next($request);\n        } else {\n            return response()-&gt;json(['message' =&gt; 'Invalid token'], 401);\n        }\n    }\n}<\/code><\/pre>\n<h4>&#27880;&#20876;&#20013;&#38388;&#20214;<\/h4>\n<p>&#22312; <code>app\/Http\/Kernel.php<\/code> &#25991;&#20214;&#20013;&#27880;&#20876;&#36825;&#20010;&#20013;&#38388;&#20214;&#12290;<\/p>\n<pre><code class=\"language-php\">protected $routeMiddleware = [\n    \/\/ &#20854;&#20182;&#20013;&#38388;&#20214;...\n    'auth.api' =&gt; AppHttpMiddlewareAuthenticateToken::class,\n];<\/code><\/pre>\n<h4>&#22312;&#36335;&#30001;&#20013;&#24212;&#29992;&#20013;&#38388;&#20214;<\/h4>\n<pre><code class=\"language-php\">Route::group([\n    'prefix' =&gt; 'api',\n    'middleware' =&gt; 'auth.api',\n], function () {\n    Route::get('\/users', 'UserController@index');\n});<\/code><\/pre>\n<p>&#36825;&#20123;&#26041;&#27861;&#21487;&#20197;&#24110;&#21161;&#20320;&#22312; Laravel &#24212;&#29992;&#20013;&#23433;&#20840;&#22320;&#20174;&#35831;&#27714;&#22836;&#20013;&#25552;&#21462;&#21644;&#39564;&#35777;&#36523;&#20221;&#39564;&#35777;&#20196;&#29260;&#12290;&#36873;&#25321;&#21738;&#31181;&#26041;&#27861;&#21462;&#20915;&#20110;&#20320;&#30340;&#20855;&#20307;&#38656;&#27714;&#21644;&#20010;&#20154;&#20559;&#22909;&#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>&#22312;&#20351;&#29992;Laravel&#26500;&#24314;Web&#24212;&#29992;&#26102;&#65292;&#22788;&#29702;&#36523;&#20221;&#39564;&#35777;&#26159;&#19968;&#20010;&#20851;&#38190;&#27493;&#39588;&#12290;&#24120;&#35265;&#30340;&#26041;&#27861;&#20043;&#19968;&#26159;&#20351;&#29992;&#20196;&#29260;&#26469;&#35748;&#35777;&#29992;&#25143;&#65292;&#36825;&#20123;&#20196;&#29260;&#36890;&#24120;&#36890;&#36807;&#35831;&#27714;&#22836;&#20256;&#36882;&#12290;&#22312;&#36825;&#31687;&#25945;&#31243;&#20013;&#65292;&#25105;&#20204;&#23558;&#35814;&#32454;&#20171;&#32461;&#22914;&#20309;&#20351;&#29992;Laravel&#30340;&#24378;&#22823;Request&#31867;&#12289;&#20013;&#38388;&#20214;&#21644;&#36523;&#20221;&#39564;&#35777;&#21151;&#33021;&#20174;&#35831;&#27714;&#22836;&#20013;&#25552;&#21462;&#36523;&#20221;&#39564;&#35777;&#20196;&#29260;&#12290;&#36825;&#31181;&#25216;&#26415;&#29305;&#21035;&#36866;&#29992;&#20110;&#22788;&#29702;RESTful API&#21644;&#21333;&#39029;&#38754;&#24212;&#29992;&#31243;&#24207;&#65288;SPA&#65289;&#65292;&#20854;&#20013;token&#22522;&#30340;&#35748;&#35777;&#26631;&#20934;&#20570;&#27861;&#12290;<\/p><h2>&#29702;&#35299;&#35831;&#27714;&#23545;&#35937;<\/h2><p>Laravel&#30340;&#35831;&#27714;&#23545;&#35937;&#25552;&#20379;&#20102;&#20197;&#38754;&#21521;&#23545;&#35937;&#30340;&#26041;&#24335;&#19982;&#26381;&#21153;&#22120;&#25509;&#25910;&#21040;&#30340;HTTP&#35831;&#27714;&#20132;&#20114;&#30340;&#26041;&#27861;&#12290;&#36825;&#21253;&#25324;&#33719;&#21462;&#22836;&#20449;&#24687;&#12289;&#26597;&#35810;&#23383;&#31526;&#20018;&#21442;&#25968;&#12289;POST&#25968;&#25454;&#31561;&#12290;&#39318;&#20808;&#65292;&#38656;&#35201;&#20102;&#35299;&#22914;&#20309;&#22312;Laravel&#24212;&#29992;&#20013;&#35775;&#38382;&#35831;&#27714;&#23545;&#35937;&#12290;<\/p><pre><code>\/\/ Accessing request in a controller method\npublic function myControllerMethod(\n    IlluminateHttpRequest $request)\n{\n    $token = $request-&gt;header('Authorization');\n}\n<\/code><\/pre><h2>&#21019;&#24314;&#19968;&#20010;&#29992;&#20110;&#25552;&#21462;&#20196;&#29260;&#30340;&#20013;&#38388;&#20214;<\/h2><p>&#20013;&#38388;&#20214;&#22312;Laravel&#20013;&#26159;&#19968;&#20010;&#24378;&#22823;&#30340;&#21151;&#33021;&#65292;&#20801;&#35768;&#24744;&#36807;&#28388;&#36827;&#20837;&#24212;&#29992;&#31243;&#24207;&#30340;HTTP&#35831;&#27714;&#12290;&#25105;&#20204;&#21487;&#20197;&#21019;&#24314;&#19968;&#20010;&#33258;&#23450;&#20041;&#20013;&#38388;&#20214;&#26469;&#20174;&#35831;&#27714;&#22836;&#20013;&#25552;&#21462;&#35748;&#35777;&#20196;&#29260;&#12290;<\/p><pre><code>php artisan make:middleware TokenExtractionMiddleware\n<\/code><\/pre><p>&#22312;&#21019;&#24314;&#20013;&#38388;&#20214;&#21518;&#65292;&#20320;&#38656;&#35201;&#23450;&#20041;&#36923;&#36753;&#20197;&#20174;&#20869;&#37096;&#25552;&#21462;&#20196;&#29260;&#12290;<code>handle()<\/code>&#26041;&#27861;&#22312;&#26032;&#21019;&#24314;&#30340;<code>TokenExtractionMiddleware.php<\/code>&#25991;&#20214;&#12290;<\/p><pre><code>namespace AppHttpMiddleware;\n\nuse Closure;\n\nclass TokenExtractionMiddleware\n{\n    public function handle($request, Closure $next)\n    {\n        $token = $request-&gt;bearerToken();\n        if (!$token) {\n            \/\/ Handle the case where token is absent\n            return response('Unauthorized', 401);\n        }\n        \/\/ You can attach the token to the request object\n        $request-&gt;request-&gt;add(['access_token' =&gt; $token]);\n\n        return $next($request);\n    }\n}\n<\/code><\/pre><p>&#29616;&#22312;&#65292;&#21019;&#24314;&#20013;&#38388;&#20214;&#21518;&#65292;&#20320;&#38656;&#35201;&#22312;&#20320;&#30340;&#24212;&#29992;&#20013;&#27880;&#20876;&#23427;&#12290;<code>kernel.php<\/code>&#30830;&#20445;&#23427;&#24212;&#29992;&#20110;&#35831;&#27714;&#12290;<\/p><pre><code>\/\/ Within your Kernel.php's $routeMiddleware array\n'extract.token' =&gt; AppHttpMiddlewareTokenExtractionMiddleware::class,\n<\/code><\/pre><p>&#29616;&#22312;&#65292;&#24744;&#21487;&#20197;&#20351;&#29992;&#36825;&#20010;&#20013;&#38388;&#20214;&#22312;&#24744;&#30340;&#36335;&#30001;&#25110;&#25511;&#21046;&#22120;&#20013;&#25552;&#21462;&#20196;&#29260;&#12290;<\/p><pre><code>\/\/ Assigning middleware to routes\nRoute::get('\/api\/user', function () {\n    \/\/ Your secured resource access here\n})-&gt;middleware('extract.token');\n<\/code><\/pre><h2>&#19982;&#35748;&#35777;&#36335;&#30001;&#30340;&#24037;&#20316;<\/h2><p>&#22914;&#26524;&#25552;&#21462;&#20196;&#29260;&#30340;&#30446;&#30340;&#22312;&#20110;&#39564;&#35777;&#29992;&#25143;&#65292;&#20320;&#21487;&#20197;&#21033;&#29992;Laravel&#30340;&#35748;&#35777;&#23432;&#25252;&#31995;&#32479;&#12290;&#24403;&#20351;&#29992;API&#20196;&#29260;&#26102;&#65292;&#35768;&#22810;&#24320;&#21457;&#20154;&#21592;&#20250;&#36873;&#25321;&#20351;&#29992;&#36825;&#31181;&#26041;&#27861;&#12290;<code>auth:api<\/code>&#30830;&#20445;&#23558;&#35813;&#33337;&#19982;Laravel&#19968;&#36215;&#32500;&#25252;&#12290;&#36890;&#36807;&#22312;&#36335;&#30001;&#19978;&#38468;&#21152;&#27492;&#20013;&#38388;&#20214;&#65292;Laravel&#23558;&#20026;&#24744;&#25552;&#21462;&#21644;&#39564;&#35777;&#20196;&#29260;&#12290;<\/p><pre><code>\/\/ This route will require a valid token\nto access the authenticated user details\nRoute::middleware('auth:api')-&gt;get('\/user', function (\n    IlluminateHttpRequest $request)\n{\n    return $request-&gt;user();\n});\n<\/code><\/pre><h2>&#20351;&#29992;Laravel Sanctum&#21019;&#24314;&#20195;&#24065;<\/h2><p>Laravel Sanctum &#26159;&#19968;&#20010;&#31616;&#21333;&#30340;&#21253;&#65292;&#29992;&#20110;API&#20973;&#35777;&#35748;&#35777;&#65292;&#38750;&#24120;&#36866;&#21512;&#21333;&#39029;&#24212;&#29992;&#21644;&#31616;&#21333;API&#12290;&#24403;&#20320;&#23433;&#35013;&#24182;&#37197;&#32622;&#20102;Sanctum&#21518;&#65292;&#21019;&#24314;&#20973;&#35777;&#38750;&#24120;&#23481;&#26131;&#12290;<\/p><pre><code>$user = AppModelsUser::find(1);\n$token = $user-&gt;createToken('Token Name')-&gt;plainTextToken;\n<\/code><\/pre><p>&#20174;&#23458;&#25143;&#31471;&#21521;Laravel&#24212;&#29992;&#21457;&#36865;&#20196;&#29260;&#36890;&#24120;&#20250;&#36890;&#36807;Authorization&#22836;&#36827;&#34892;&#12290;<\/p><pre><code>\/\/ Example Authorization header\nAuthorization: Bearer 1|abcdefghijklnopqrstuvwxyzABCDEFG\n<\/code><\/pre><h2>&#38169;&#35823;&#22788;&#29702;&#21644;&#23433;&#20840;&#24615;&#32771;&#34385;<\/h2><p>&#24403;&#20320;&#20174;&#35831;&#27714;&#22836;&#20013;&#25552;&#21462;&#20196;&#29260;&#26102;&#65292;&#21153;&#24517;&#23454;&#29616;&#36866;&#24403;&#30340;&#38169;&#35823;&#22788;&#29702;&#12290;&#20196;&#29260;&#30340;&#26377;&#25928;&#24615;&#24212;&#22987;&#32456;&#34987;&#26816;&#26597;&#65292;&#24182;&#22312;&#20196;&#29260;&#26377;&#38382;&#39064;&#26102;&#36820;&#22238;&#28165;&#26224;&#30340;&#21709;&#24212;&#12290;&#22987;&#32456;&#35760;&#20303;&#20351;&#29992;HTTPS&#26469;&#20445;&#25252;&#20196;&#29260;&#20813;&#21463;&#20256;&#36755;&#26399;&#38388;&#30340;&#27844;&#38706;&#12290;<\/p><h2>&#32467;&#35770;&#12290;<\/h2><p>&#32508;&#19978;&#25152;&#36848;&#65292;&#22312;Laravel&#20013;&#20174;&#35831;&#27714;&#22836;&#25552;&#21462;&#35748;&#35777;&#20196;&#29260;&#21487;&#20197;&#36890;&#36807;&#22810;&#31181;&#26041;&#24335;&#23454;&#29616;&#12290;&#26080;&#35770;&#26159;&#25511;&#21046;&#22120;&#26041;&#27861;&#20869;&#12289;&#20351;&#29992;&#20013;&#38388;&#20214;&#65292;&#36824;&#26159;&#21033;&#29992;&#20869;&#32622;&#30340;&#36523;&#20221;&#39564;&#35777;&#23432;&#25252;&#31243;&#24207;&#65292;Laravel&#25552;&#20379;&#20102;&#38024;&#23545;&#35813;&#20219;&#21153;&#30340;&#24037;&#20855;&#12290;&#35831;&#27880;&#24847;&#65292;&#22312;&#23433;&#20840;&#24615;&#21644;API&#20196;&#29260;&#31649;&#29702;&#26041;&#38754;&#36981;&#24490;&#26368;&#20339;&#23454;&#36341;&#65292;&#23588;&#20854;&#26159;&#22312;&#32771;&#34385;&#20854;&#33539;&#22260;&#21644;&#29983;&#21629;&#21608;&#26399;&#26102;&#12290;&#29616;&#22312;&#20320;&#24212;&#35813;&#23545;&#22914;&#20309;&#22312;Laravel&#24212;&#29992;&#20013;&#25552;&#21462;&#21644;&#22788;&#29702;&#35748;&#35777;&#20196;&#29260;&#26377;&#20102;&#20840;&#38754;&#30340;&#29702;&#35299;&#12290;&#24841;&#24555;&#32534;&#31243;&#65281;<\/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;&#20174; HTTP &#35831;&#27714;&#22836;&#20013;&#25552;&#21462;&#36523;&#20221;&#39564;&#35777;&#20196;&#29260;&#65292;&#20320;&#21487;&#20197;&#20351;&#29992;&#20197;&#19979;&#26041;&#27861;&#65306;<\/p>\n<p>&#39318;&#20808;&#65292;&#30830;&#20445;&#22312;&#20320;&#30340; <code>config\/app.php<\/code> &#25991;&#20214;&#20013;&#21551;&#29992;&#20102; JWT (JSON Web Tokens)&#12290;<\/p>\n<pre><code class=\"language-php\">'middleware' =&gt; [\n    'throttle:60,1',\n],\n'servers' =&gt; [\n    [\n        'driver' =&gt; 'redis',\n        'host' =&gt; env('REDIS_HOST', 'localhost'),\n        'password' =&gt; env('REDIS_PASSWORD', null),\n        'timeout' =&gt; 30,\n        'ssl' =&gt; true,\n        'decode' =&gt; true,\n        'key' =&gt; env('REDIS_KEY', ''),\n    ],\n],<\/code><\/pre>\n<p>&#28982;&#21518;&#65292;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#20013;&#38388;&#20214;&#26469;&#22788;&#29702;&#36523;&#20221;&#39564;&#35777;&#20196;&#29260;&#30340;&#25552;&#21462;&#65306;<\/p>\n<pre><code class=\"language-php\">use IlluminateHttpRequest;\nuse IlluminateSupportFacadesAuth;\n\nclass AuthenticateMiddleware extends Middleware {\n    \/**\n     * Handle an incoming request.\n     *\n     * @param Request $request\n     * @return mixed\n     *\/\n    public function handle(Request $request, Closure $next)\n    {\n        if ($request-&gt;headers-&gt;has('Authorization')) {\n            \/\/ Extract the token from the Authorization header\n            $token = $request-&gt;header('Authorization');\n\n            return $this-&gt;authenticate($token);\n        }\n\n        return $next($request);\n    }\n\n    protected function authenticate(string $token): bool\n    {\n        try {\n            return Auth::attempt(['token' =&gt; $token]);\n        } catch (IlluminateContractsAuthUnauthorizedException $e) {\n            return false;\n        }\n    }\n}<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#25105;&#20204;&#23450;&#20041;&#20102;&#19968;&#20010;&#21517;&#20026; <code>AuthenticateMiddleware<\/code> &#30340;&#20013;&#38388;&#20214;&#12290;&#23427;&#30417;&#21548; <code>Authorization<\/code> &#22836;&#37096;&#65292;&#24182;&#23581;&#35797;&#20174;&#20013;&#25552;&#21462;&#24182;&#39564;&#35777;&#20196;&#29260;&#12290;&#22914;&#26524;&#25104;&#21151;&#39564;&#35777;&#65292;<code>authenticate()<\/code> &#26041;&#27861;&#23558;&#36820;&#22238; <code>true<\/code>&#65307;&#21542;&#21017;&#65292;&#23427;&#23558;&#35843;&#29992; <code>Auth::attempt()<\/code> &#24182;&#36820;&#22238; <code>false<\/code>&#12290;<\/p>\n<p>&#35831;&#27880;&#24847;&#65292;&#36825;&#21482;&#26159;&#19968;&#20010;&#22522;&#26412;&#31034;&#20363;&#65292;&#23454;&#38469;&#24212;&#29992;&#20013;&#21487;&#33021;&#20250;&#38656;&#35201;&#26356;&#22797;&#26434;&#30340;&#36923;&#36753;&#26469;&#22788;&#29702;&#19981;&#21516;&#30340;&#24773;&#20917;&#21644;&#38169;&#35823;&#12290;&#20363;&#22914;&#65292;&#20320;&#21487;&#33021;&#38656;&#35201;&#26816;&#26597;&#29992;&#25143;&#26159;&#21542;&#24050;&#36807;&#26399;&#65292;&#25110;&#32773;&#22312;&#35748;&#35777;&#22833;&#36133;&#26102;&#37319;&#21462;&#20854;&#20182;&#25514;&#26045;&#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;&#20174;&#35831;&#27714;&#038;#2..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[44],"tuisongtax":[],"class_list":["post-815","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\/815","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=815"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=815"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=815"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=815"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}