{"id":884,"date":"2025-06-12T01:58:15","date_gmt":"2025-06-11T17:58:15","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/laravel\/884.html"},"modified":"2025-06-12T01:58:15","modified_gmt":"2025-06-11T17:58:15","slug":"laravel%e9%97%ae%e9%a2%98%ef%bc%9a%e9%a1%b5%e9%9d%a2%e7%94%b1%e4%ba%8e%e6%9c%aa%e6%b4%bb%e5%8a%a8%e8%80%8c%e8%bf%87%e6%9c%9f","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/884.html","title":{"rendered":"Laravel\u95ee\u9898\uff1a\u9875\u9762\u7531\u4e8e\u672a\u6d3b\u52a8\u800c\u8fc7\u671f"},"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;&#22914;&#26524;&#39029;&#38754;&#30001;&#20110;&#38271;&#26102;&#38388;&#26410;&#27963;&#21160;&#32780;&#36807;&#26399;&#65292;&#21487;&#20197;&#36890;&#36807;&#35774;&#32622;&#20250;&#35805;&#36229;&#26102;&#26102;&#38388;&#26469;&#35299;&#20915;&#36825;&#20010;&#38382;&#39064;&#12290;&#20197;&#19979;&#26159;&#19968;&#20010;&#31616;&#21333;&#30340;&#31034;&#20363;&#65292;&#23637;&#31034;&#20102;&#22914;&#20309;&#36890;&#36807;&#20462;&#25913;&#37197;&#32622;&#25991;&#20214;&#21644;&#25511;&#21046;&#22120;&#26041;&#27861;&#26469;&#23454;&#29616;&#36825;&#19968;&#21151;&#33021;&#12290;<\/p>\n<h3>1. &#20462;&#25913;&#37197;&#32622;&#25991;&#20214;<\/h3>\n<p>&#39318;&#20808;&#65292;&#20320;&#38656;&#35201;&#22312; <code>config\/session.php<\/code> &#25991;&#20214;&#20013;&#25214;&#21040; <code>lifetime<\/code> &#37197;&#32622;&#39033;&#65292;&#24182;&#23558;&#20854;&#20540;&#35843;&#25972;&#20026;&#20320;&#24819;&#35201;&#30340;&#36229;&#26102;&#26102;&#38388;&#65288;&#20197;&#20998;&#38047;&#20026;&#21333;&#20301;&#65289;&#12290;&#20363;&#22914;&#65292;&#22914;&#26524;&#20320;&#24076;&#26395;&#39029;&#38754;&#36807;&#26399;&#26102;&#38388;&#20026; 30 &#20998;&#38047;&#65292;&#21487;&#20197;&#23558; <code>lifetime<\/code> &#35774;&#32622;&#20026;&#65306;<\/p>\n<pre><code class=\"language-php\">'lifetime' =&gt; 30,<\/code><\/pre>\n<h3>2. &#21019;&#24314;&#25110;&#20462;&#25913;&#25511;&#21046;&#22120;&#26041;&#27861;<\/h3>\n<p>&#25509;&#19979;&#26469;&#65292;&#20320;&#38656;&#35201;&#22312;&#20320;&#30340;&#25511;&#21046;&#22120;&#20013;&#28155;&#21152;&#19968;&#20010;&#26041;&#27861;&#26469;&#22788;&#29702;&#20250;&#35805;&#36807;&#26399;&#30340;&#24773;&#20917;&#12290;&#20551;&#35774;&#20320;&#26377;&#19968;&#20010;&#21517;&#20026; <code>IndexController<\/code> &#30340;&#25511;&#21046;&#22120;&#65292;&#24182;&#19988;&#20320;&#24819;&#22312;&#29992;&#25143;&#38271;&#26102;&#38388;&#19981;&#27963;&#21160;&#21518;&#33258;&#21160;&#36339;&#36716;&#21040;&#30331;&#24405;&#39029;&#38754;&#65292;&#20320;&#21487;&#20197;&#36825;&#26679;&#20570;&#65306;<\/p>\n<pre><code class=\"language-php\">namespace AppHttpControllers;\n\nuse IlluminateSupportFacadesAuth;\nuse IlluminateHttpRequest;\n\nclass IndexController extends Controller\n{\n    public function index(Request $request)\n    {\n        \/\/ &#26816;&#26597;&#26159;&#21542;&#24050;&#32463;&#30331;&#24405;\n        if (Auth::check()) {\n            return view('welcome');\n        }\n\n        \/\/ &#22914;&#26524;&#27809;&#26377;&#30331;&#24405;&#65292;&#21017;&#26816;&#26597;&#20250;&#35805;&#26159;&#21542;&#24050;&#36807;&#26399;\n        if ($request-&gt;session()-&gt;has('_token')) {\n            $lastActivity = $request-&gt;session()-&gt;get('_token');\n\n            \/\/ &#35745;&#31639;&#19978;&#27425;&#27963;&#21160;&#30340;&#26102;&#38388;&#25139;&#19982;&#24403;&#21069;&#26102;&#38388;&#25139;&#30340;&#24046;&#20540;\n            $timeDifference = time() - strtotime($lastActivity);\n\n            \/\/ &#22914;&#26524;&#36229;&#36807;&#35774;&#23450;&#30340;&#20250;&#35805;&#36229;&#26102;&#26102;&#38388;&#65292;&#21017;&#37325;&#23450;&#21521;&#21040;&#30331;&#24405;&#39029;&#38754;\n            if ($timeDifference &gt; config('session.lifetime') * 60) {\n                Auth::logout();\n                return redirect('\/login');\n            }\n        }\n\n        \/\/ &#22914;&#26524;&#20250;&#35805;&#27809;&#26377;&#36807;&#26399;&#65292;&#21017;&#36820;&#22238;&#27426;&#36814;&#39029;&#38754;\n        return view('welcome');\n    }\n}<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#31034;&#20363;&#20013;&#65292;&#25105;&#20204;&#20351;&#29992;&#20102; Laravel &#30340; <code>Auth<\/code> facade &#26469;&#26816;&#26597;&#29992;&#25143;&#26159;&#21542;&#24050;&#30331;&#24405;&#65292;&#24182;&#20351;&#29992; <code>Session<\/code> facade &#26469;&#33719;&#21462;&#24182;&#26356;&#26032;&#20250;&#35805;&#20013;&#30340;&#20196;&#29260;&#65288;<code>_token<\/code>&#65289;&#12290;<\/p>\n<h3>3. &#26356;&#26032;&#35270;&#22270;<\/h3>\n<p>&#26368;&#21518;&#65292;&#30830;&#20445;&#20320;&#30340;&#35270;&#22270;&#25991;&#20214;&#20013;&#21253;&#21547;&#20102;&#20250;&#35805;&#20196;&#29260;&#65292;&#24182;&#19988;&#22312;&#38656;&#35201;&#30340;&#22320;&#26041;&#35843;&#29992;&#23427;&#12290;&#20363;&#22914;&#65292;&#22312; <code>welcome.blade.php<\/code> &#25991;&#20214;&#20013;&#65306;<\/p>\n<pre><code class=\"language-html\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n    &lt;meta charset=\"UTF-8\"&gt;\n    &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"&gt;\n    &lt;title&gt;Welcome&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;h1&gt;Welcome to the Laravel Application&lt;\/h1&gt;\n\n    @if (!Auth::check())\n        &lt;a href=\"\/login\"&gt;Login&lt;\/a&gt;\n    @else\n        &lt;p&gt;You are logged in as {{ Auth::user()-&gt;name }}&lt;\/p&gt;\n        &lt;!-- &#20854;&#20182;&#20869;&#23481; --&gt;\n    @endif\n\n    &lt;script&gt;\n        document.addEventListener('DOMContentLoaded', function() {\n            const tokenInput = document.getElementById('token-input');\n            tokenInput.value = '{{ csrf_token() }}';\n        });\n    &lt;\/script&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#31034;&#20363;&#20013;&#65292;&#25105;&#20204;&#22312;&#35270;&#22270;&#20013;&#28155;&#21152;&#20102;&#19968;&#20010;&#38544;&#34255;&#30340;&#36755;&#20837;&#26694;&#65292;&#29992;&#20110;&#23384;&#20648; CSRF &#20196;&#29260;&#65292;&#24182;&#22312;&#39029;&#38754;&#21152;&#36733;&#23436;&#25104;&#21518;&#23558;&#20854;&#20540;&#35774;&#32622;&#20026; CSRF &#20196;&#29260;&#12290;<\/p>\n<p>&#36890;&#36807;&#20197;&#19978;&#27493;&#39588;&#65292;&#20320;&#24212;&#35813;&#33021;&#22815;&#35299;&#20915; Laravel &#39029;&#38754;&#30001;&#20110;&#26410;&#27963;&#21160;&#32780;&#36807;&#26399;&#30340;&#38382;&#39064;&#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 &#26159;&#19968;&#20010;&#21151;&#33021;&#24378;&#22823;&#19988;&#25991;&#26723;&#35814;&#23613;&#30340;PHP&#26694;&#26550;&#65292;&#20026; Web &#24212;&#29992;&#31243;&#24207;&#24320;&#21457;&#25552;&#20379;&#20102;&#39640;&#24230;&#23433;&#20840;&#30340;&#29615;&#22659;&#12290;&#20854;&#20013;&#19968;&#39033;&#23433;&#20840;&#24615;&#25514;&#26045;&#23601;&#26159;&#20250;&#35805;&#31649;&#29702;&mdash;&mdash;&#30830;&#20445;&#29992;&#25143;&#25968;&#25454;&#19981;&#33853;&#20837;&#38169;&#35823;&#20043;&#25163;&#33267;&#20851;&#37325;&#35201;&#12290;&#23613;&#31649;&#26377;&#35832;&#22810;&#22909;&#22788;&#65292;&#20294;&#24320;&#21457;&#32773;&#24120;&#24120;&#36935;&#21040;&#30340;&#19968;&#20010;&#25361;&#25112;&#26159;&ldquo;&#39029;&#38754;&#24050;&#36807;&#26399;&#65292;&#22240;&#26410;&#27963;&#21160;&rdquo;&#36825;&#26679;&#30340;&#25552;&#31034;&#12290;&#36825;&#36890;&#24120;&#21457;&#29983;&#22312;&#29992;&#25143;&#30340;&#20250;&#35805;&#22833;&#25928;&#25110;&#32773;CSRF&#20196;&#29260;&#21305;&#37197;&#22833;&#36133;&#26102;&#12290;<\/p><h2>&#29702;&#35299;&#20250;&#35805;&#36807;&#26399;<\/h2><p>&#20250;&#35805;&#36807;&#26399;&#26159;&#19968;&#31181;&#23433;&#20840;&#25514;&#26045;&#65292;&#26088;&#22312;&#38450;&#27490;&#26410;&#32463;&#25480;&#26435;&#23545;&#29992;&#25143;&#36134;&#25143;&#30340;&#25805;&#20316;&#12290;&#22312;&#19968;&#27573;&#26102;&#38388;&#20869;&#26410;&#27963;&#21160;&#21518;&#65292;&#26381;&#21153;&#22120;&#20250;&#24223;&#38500;&#23458;&#25143;&#31471;&#30340;&#20250;&#35805;&#12290;&#27491;&#30830;&#22788;&#29702;&#20250;&#35805;&#36807;&#26399;&#30340;&#20851;&#38190;&#22312;&#20110;&#29702;&#35299;Laravel&#30340;&#20250;&#35805;&#37197;&#32622;&#12290;<\/p><p>&#22312;Laravel&#20013;&#65292;&#20250;&#35805;&#35774;&#32622;&#23450;&#20041;&#22312;<code>config\/session.php<\/code>&#35831;&#35760;&#19979;&#36825;&#20010;&#12290;<code>'lifetime'<\/code>&#20250;&#35805;&#20801;&#35768;&#20445;&#25345;&#31354;&#38386;&#22810;&#23569;&#20998;&#38047;&#21518;&#25165;&#20250;&#36807;&#26399;&#65306;<\/p><pre><code>'lifetime' =&gt; env('SESSION_LIFETIME', 120),<\/code><\/pre><h2>&#22788;&#29702;CSRF&#20196;&#29260;<\/h2><p>&#36328;&#31449;&#35831;&#27714;&#20266;&#36896;&#65288;CSRF&#65289;&#20196;&#29260;&#26159;Laravel&#20351;&#29992;&#30340;&#23433;&#20840;&#21151;&#33021;&#65292;&#29992;&#20110;&#39564;&#35777;&#34920;&#21333;&#25552;&#20132;&#12290;&#26368;&#24120;&#35265;&#30340;&ldquo;&#39029;&#38754;&#24050;&#36807;&#26399;&rdquo;&#28040;&#24687;&#21407;&#22240;&#20043;&#19968;&#26159;&#35813;&#20196;&#29260;&#30340;&#38472;&#26087;&#25110;&#32570;&#22833;&#65292;&#36890;&#24120;&#22312;&#24744;&#30340;&#34920;&#21333;&#20013;&#30340;&#38544;&#34255;&#23383;&#27573;&#20013;&#25214;&#21040;&#65306;<\/p><pre><code>&lt;input type=\"hidden\" name=\"_token\" value=\"{{ csrf_token() }}\"&gt;<\/code><\/pre><p>&#30830;&#20445;&#27599;&#27425;&#34920;&#21333;&#25552;&#20132;&#37117;&#38468;&#24102;&#21047;&#26032;&#20196;&#29260;&#12290;&#22914;&#26524;&#20320;&#20351;&#29992;AJAX&#35843;&#29992;&#65292;&#38656;&#35201;&#22312;&#35831;&#27714;&#22836;&#20013;&#20256;&#36882;CSRF&#20196;&#29260;&#65306;<\/p><pre><code>$.ajaxSetup({\n   headers: {\n       'X-CSRF-TOKEN': $('meta[name=\"csrf-token\"]').attr('content')\n   }\n});<\/code><\/pre><h2>&#35299;&#20915;Token&#19981;&#21305;&#37197;&#38382;&#39064;<\/h2><p>&#22914;&#26524;&#29992;&#25143;&#22312;&#19968;&#27573;&#26102;&#38388;&#20869;&#26410;&#25805;&#20316;&#32593;&#39029;&#21518;&#37325;&#26032;&#28608;&#27963;&#65292;&#21487;&#33021;&#20250;&#20986;&#29616;&#20250;&#35805;&#36229;&#26102;&#25110;CSRF&#20196;&#29260;&#19981;&#21305;&#37197;&#31561;&#38382;&#39064;&#12290;&#21518;&#32773;&#23588;&#20854;&#38590;&#20197;&#35299;&#20915;&#12290;<\/p><p>&#19968;&#31181;&#22788;&#29702;&#20196;&#29260;&#19981;&#21305;&#37197;&#30340;&#26041;&#27861;&#26159;&#36890;&#36807;&#22312;CSRF&#20445;&#25252;&#20013;&#25490;&#38500;&#29305;&#23450;&#30340;&#36335;&#30001;&#26469;&#23454;&#29616;&#65292;&#36825;&#20123;&#36335;&#30001;&#38656;&#35201;&#25163;&#21160;&#28155;&#21152;&#21040;CSRF&#38450;&#25252;&#35774;&#32622;&#20013;&#12290;<code>$except<\/code>&#25968;&#32452;&#22312;<code>VerifyCsrfToken.php<\/code>middleware: &#20013;&#38388;&#20214;<\/p><pre><code>protected $except = [\n   \/\/ List of URIs that should be excluded from CSRF verification\n   'some\/route\/to\/exclude',\n   'another\/route\/to\/exclude',\n];<\/code><\/pre><h2>&#25552;&#21319;&#29992;&#25143;&#20307;&#39564;<\/h2><p>&#22312;&#30830;&#20445;&#20250;&#35805;&#21644;&#34920;&#21333;&#30340;&#23433;&#20840;&#24615;&#26102;&#65292;&#32771;&#34385;&#29992;&#25143;&#20307;&#39564;&#12290;&#32780;&#19981;&#26159;&#31616;&#21333;&#22320;&#26174;&#31034;&#38169;&#35823;&#28040;&#24687;&#65292;&#21487;&#20197;&#37325;&#23450;&#21521;&#29992;&#25143;&#22238;&#21040;&#20182;&#20204;&#30340;&#25968;&#25454;&#23436;&#25972;&#30340;&#34920;&#21333;&#65292;&#25110;&#32773;&#21521;&#29992;&#25143;&#25552;&#20379;&#19968;&#20010;&#35299;&#37322;&#35828;&#20182;&#20204;&#30340;&#20250;&#35805;&#24050;&#36229;&#26102;&#30340;&#28040;&#24687;&#12290;<\/p><p>&#19968;&#31181;&#31574;&#30053;&#26159;&#20462;&#25913;<code>render<\/code>&#26041;&#27861;&#22312;<code>AppExceptionsHandler<\/code>class&#12290;&#20320;&#21487;&#20197;&#26816;&#27979;&#21040;&#20196;&#29260;&#19981;&#21305;&#37197;&#24322;&#24120;&#24182;&#37319;&#21462;&#36866;&#24403;&#25514;&#26045;&#65306;<\/p><pre><code>public function render($request, Exception $exception)\n{\n   if ($exception instanceof IlluminateSessionTokenMismatchException) {\n       return redirect()-&gt;back()-&gt;withInput($request-&gt;except('_token'))-&gt;with('token_error', 'Sorry, your session seems to have expired. Please try again.');\n   }\n\n   return parent::render($request, $exception);\n}<\/code><\/pre><h2>&#36127;&#36733;&#22343;&#34913;&#22120;&#19978;&#30340;&#20250;&#35805;&#31649;&#29702;<\/h2><p>&#22914;&#26524;&#24744;&#30340;&#24212;&#29992;&#31243;&#24207;&#37096;&#32626;&#22312;&#36127;&#36733;&#22343;&#34913;&#22120;&#21518;&#38754;&#30340;&#22810;&#20010;&#26381;&#21153;&#22120;&#19978;&#65292;&#19981;&#19968;&#33268;&#30340;&#20250;&#35805;&#22788;&#29702;&#21487;&#33021;&#20250;&#23548;&#33268;&#36807;&#26399;&#28040;&#24687;&#12290;&#21033;&#29992;&#20849;&#20139;&#20250;&#35805;&#23384;&#20648;&#22914;Redis&#25110;&#25968;&#25454;&#24211;&#20250;&#35805;&#39537;&#21160;&#31243;&#24207;&#26469;&#20445;&#25345;&#20250;&#35805;&#30340;&#19968;&#33268;&#24615;&#12290;<\/p><pre><code>'driver' =&gt; env('SESSION_DRIVER', 'file'), \/\/ Change 'file' to 'redis' or 'database'<\/code><\/pre><h2>&#20351;&#29992;&#25968;&#25454;&#24211;&#31896;&#24615;&#26469;&#32500;&#25252;&#20250;&#35805;&#25968;&#25454;<\/h2><p>&#22312;&#21160;&#24577;&#32553;&#25918;&#22522;&#30784;&#35774;&#26045;&#20013;&#65292;&#30830;&#20445;&#22312;&#36127;&#36733;&#22343;&#34913;&#22120;&#19978;&#23454;&#26045;&#31896;&#24615;&#20250;&#35805;&#25110;&#25968;&#25454;&#24211;&#31896;&#24615;&#20197;&#20351;&#29992;&#25143;&#22987;&#32456;&#34987;&#36335;&#30001;&#21040;&#20854;&#20250;&#35805;&#23384;&#20648;&#30340;&#30456;&#21516;&#21518;&#31471;&#26381;&#21153;&#22120;&#12290;<\/p><h2>&#32467;&#35770;&#12290;<\/h2><p>Laravel&#30340;&ldquo;&#39029;&#38754;&#24050;&#36807;&#26399;&rdquo;&#28040;&#24687;&#24182;&#19981;&#26159;&#19968;&#20010;&#38169;&#35823;&#65292;&#32780;&#26159;&#19968;&#31181;&#23433;&#20840;&#21151;&#33021;&#12290;&#27491;&#30830;&#30340;&#20250;&#35805;&#21644;CSRF&#20196;&#29260;&#31649;&#29702;&#21487;&#20197;&#20943;&#23569;&#20854;&#21457;&#29983;&#39057;&#29575;&#12290;&#36890;&#36807;&#37197;&#32622;&#20250;&#35805;&#35774;&#32622;&#12289;&#20027;&#21160;&#22788;&#29702;&#20196;&#29260;&#19981;&#21305;&#37197;&#20197;&#21450;&#23454;&#26045;&#29992;&#25143;&#20307;&#39564;&#22686;&#24378;&#25514;&#26045;&#65292;&#24744;&#21487;&#20197;&#26368;&#22823;&#38480;&#24230;&#22320;&#38477;&#20302;&#29992;&#25143;&#22312;&#19982;&#24744;&#30340;&#24212;&#29992;&#20114;&#21160;&#26102;&#36935;&#21040;&#27492;&#28040;&#24687;&#30340;&#39118;&#38505;&#12290;<\/p><p>&#32487;&#32493;&#25945;&#32946;&#33258;&#24049;&#20851;&#20110;Laravel&#65292;&#20026;&#25552;&#39640;&#26694;&#26550;&#30340;&#20351;&#29992;&#21644;&#31038;&#21306;&#23545;&#23427;&#30340;&#29702;&#35299;&#20570;&#20986;&#36129;&#29486;&#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>Laravel&#26694;&#26550;&#30340;<code>Gate<\/code>&#39564;&#35777;&#31995;&#32479;&#21487;&#20197;&#29992;&#26469;&#38450;&#27490;&#26410;&#32463;&#25480;&#26435;&#30340;&#35775;&#38382;&#12290;&#22914;&#26524;&#29992;&#25143;&#23581;&#35797;&#35775;&#38382;&#21463;&#38480;&#36164;&#28304;&#65288;&#22914;&#31649;&#29702;&#21592;&#21482;&#33021;&#30475;&#21040;&#29305;&#23450;&#30340;&#25968;&#25454;&#65289;&#65292;&#21017;&#38656;&#35201;&#36890;&#36807;&#39564;&#35777;&#25165;&#33021;&#35775;&#38382;&#12290;<\/p>\n<p>&#39318;&#20808;&#65292;&#20320;&#38656;&#35201;&#30830;&#20445;&#20320;&#30340;&#25511;&#21046;&#22120;&#24050;&#32463;&#27491;&#30830;&#22320;&#35774;&#32622;&#20102;<code>usesGate<\/code>&#26041;&#27861;&#26469;&#23450;&#20041;&#26435;&#38480;&#35268;&#21017;&#12290;&#20197;&#19979;&#26159;&#22914;&#20309;&#35774;&#32622;&#30340;&#31034;&#20363;&#65306;<\/p>\n<pre><code class=\"language-php\">public function index()\n{\n    $this-&gt;usesGate('admin', 'view');\n}<\/code><\/pre>\n<p>&#36825;&#34920;&#31034;&#21482;&#26377;&#20855;&#26377;<code>admin<\/code>&#35282;&#33394;&#30340;&#29992;&#25143;&#25165;&#33021;&#26597;&#30475;&#27492;&#25511;&#21046;&#22120;&#30340;&#26041;&#27861;&#12290;&#21516;&#26679;&#65292;&#22914;&#26524;&#20320;&#24819;&#35201;&#26816;&#26597;&#26159;&#21542;&#20855;&#26377;&#29305;&#23450;&#30340;&#35282;&#33394;&#65292;&#35831;&#20351;&#29992;<code>hasRole()<\/code>&#26041;&#27861;&#65306;<\/p>\n<pre><code class=\"language-php\">if (auth()-&gt;check() &amp;&amp; auth()-&gt;user()-&gt;hasRole('admin')) {\n    \/\/ &#29992;&#25143;&#26159;&#31649;&#29702;&#21592;\n} else {\n    \/\/ &#29992;&#25143;&#19981;&#26159;&#31649;&#29702;&#21592;\n}<\/code><\/pre>\n<p>&#28982;&#21518;&#65292;&#20320;&#38656;&#35201;&#26816;&#26597;&#35831;&#27714;&#30340;&#29992;&#25143;&#26159;&#21542;&#26377;&#36275;&#22815;&#30340;&#26435;&#38480;&#26469;&#35775;&#38382;&#36164;&#28304;&#12290;&#20320;&#21487;&#20197;&#36825;&#26679;&#20570;&#65306;<\/p>\n<pre><code class=\"language-php\">if ($request-&gt;user()-&gt;can('view', $resource)) {\n    \/\/ &#29992;&#25143;&#26377;&#26435;&#38480;&#35775;&#38382;&#35813;&#36164;&#28304;\n} else {\n    \/\/ &#29992;&#25143;&#27809;&#26377;&#26435;&#38480;&#35775;&#38382;&#35813;&#36164;&#28304;\n}<\/code><\/pre>\n<p>&#23545;&#20110;&#20320;&#25552;&#21040;&#30340;&#38382;&#39064;&#65292;&ldquo;&#39029;&#38754;&#30001;&#20110;&#26410;&#27963;&#21160;&#32780;&#36807;&#26399;&rdquo;&#65292;&#21487;&#33021;&#26159;&#30001;&#20110;&#20320;&#30340;&#36335;&#30001;&#37197;&#32622;&#19981;&#27491;&#30830;&#23548;&#33268;&#30340;&#12290;&#35831;&#30830;&#20445;&#20320;&#22312;&#24212;&#29992;&#36335;&#30001;&#26102;&#25351;&#23450;&#20102;&#27491;&#30830;&#30340;&#35270;&#22270;&#21644;&#25511;&#21046;&#22120;&#65292;&#21516;&#26102;&#30830;&#20445;&#23427;&#20204;&#19982;&#25968;&#25454;&#24211;&#20013;&#30340;&#34920;&#20851;&#32852;&#27491;&#30830;&#12290;<\/p>\n<p>&#20363;&#22914;&#65292;&#22914;&#26524;&#20320;&#26377;&#19968;&#20010;&#21517;&#20026;<code>users<\/code>&#30340;&#34920;&#65292;&#24182;&#19988;&#20320;&#24819;&#22312;&#19968;&#20010;&#21517;&#20026;<code>index.blade.php<\/code>&#30340;&#35270;&#22270;&#20013;&#26174;&#31034;&#25152;&#26377;&#29992;&#25143;&#30340;&#21015;&#34920;&#65292;&#20320;&#24212;&#35813;&#36825;&#26679;&#37197;&#32622;&#20320;&#30340;&#36335;&#30001;&#65306;<\/p>\n<pre><code class=\"language-yaml\"># app\/routes.php\nRoute::get('\/users', 'UserController@index')-&gt;name('users.index');\n\n# views\/users\/index.blade.php\n@extends('layouts.app')\n\n@section('content')\n  &lt;h1&gt;List of Users&lt;\/h1&gt;\n  @foreach($users as $user)\n    &lt;div&gt;{{ $user-&gt;name }}&lt;\/div&gt;\n  @endforeach\n@endsection<\/code><\/pre>\n<p>&#35831;&#27880;&#24847;&#65292;&#20197;&#19978;&#31034;&#20363;&#20551;&#35774;&#20320;&#24050;&#32463;&#22312;&#24212;&#29992;&#20013;&#21551;&#29992;&#20102;Laravel&#30340;&#36335;&#30001;&#21644;&#35270;&#22270;&#21151;&#33021;&#12290;&#22914;&#26524;&#20320;&#36824;&#27809;&#26377;&#21551;&#29992;&#36825;&#20123;&#21151;&#33021;&#65292;&#35831;&#25353;&#29031;&#23448;&#26041;&#25991;&#26723;&#36827;&#34892;&#25805;&#20316;&#12290;<\/p>\n<p>&#26368;&#21518;&#65292;&#20026;&#20102;&#20462;&#22797;&#36825;&#20010;&#38382;&#39064;&#65292;&#20320;&#38656;&#35201;&#26816;&#26597;&#20320;&#30340;&#36335;&#30001;&#37197;&#32622;&#65292;&#24182;&#30830;&#20445;&#23427;&#25351;&#21521;&#20102;&#27491;&#30830;&#30340;&#35270;&#22270;&#21644;&#25511;&#21046;&#22120;&#12290;&#22914;&#26524;&#19968;&#20999;&#37117;&#25353;&#39044;&#26399;&#24037;&#20316;&#65292;&#37027;&#20040;&#36825;&#20010;&#38169;&#35823;&#24456;&#21487;&#33021;&#26159;&#30001;&#20854;&#20182;&#22240;&#32032;&#24341;&#36215;&#30340;&#65292;&#27604;&#22914;&#26381;&#21153;&#22120;&#19978;&#30340;&#32531;&#23384;&#38382;&#39064;&#25110;&#20854;&#20182;&#38169;&#35823;&#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;&#22914;&#26524;&#39029;&#38754;&#30001;&#20110;&#38271;&#26102;&#38388;&#26410;&#27963;&#21160;&#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-884","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\/884","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=884"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=884"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=884"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=884"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}