{"id":856,"date":"2025-06-12T01:15:49","date_gmt":"2025-06-11T17:15:49","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/laravel\/856.html"},"modified":"2025-06-12T01:15:49","modified_gmt":"2025-06-11T17:15:49","slug":"laravel%ef%bc%9a%e5%a6%82%e4%bd%95%e5%9c%a8-blade-%e6%a8%a1%e6%9d%bf%e4%b8%ad%e9%aa%8c%e8%af%81%e6%9d%83%e9%99%90","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/856.html","title":{"rendered":"Laravel\uff1a\u5982\u4f55\u5728 Blade \u6a21\u677f\u4e2d\u9a8c\u8bc1\u6743\u9650"},"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;&#20351;&#29992; <code>Auth<\/code> facade &#26469;&#39564;&#35777;&#29992;&#25143;&#26159;&#21542;&#20855;&#26377;&#29305;&#23450;&#30340;&#26435;&#38480;&#12290;&#20197;&#19979;&#26159;&#19968;&#20010;&#31034;&#20363;&#65292;&#23637;&#31034;&#20102;&#22914;&#20309;&#22312; Blade &#27169;&#26495;&#20013;&#39564;&#35777;&#26435;&#38480;&#65306;<\/p>\n<ol>\n<li>\n<p><strong>&#23433;&#35013;&#21644;&#37197;&#32622; Laravel<\/strong>&#65306;\n&#22914;&#26524;&#20320;&#36824;&#27809;&#26377;&#23433;&#35013; Laravel&#65292;&#21487;&#20197;&#20351;&#29992; Composer &#36827;&#34892;&#23433;&#35013;&#65306;<\/p>\n<pre><code class=\"language-bash\">composer create-project --prefer-dist laravel\/laravel my-laravel-app\ncd my-laravel-app<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#21019;&#24314;&#25511;&#21046;&#22120;<\/strong>&#65306;\n&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#25511;&#21046;&#22120;&#26469;&#22788;&#29702;&#26435;&#38480;&#39564;&#35777;&#36923;&#36753;&#65306;<\/p>\n<pre><code class=\"language-bash\">php artisan make:controller PermissionsController<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#23450;&#20041;&#36335;&#30001;<\/strong>&#65306;\n&#22312; <code>routes\/web.php<\/code> &#25991;&#20214;&#20013;&#28155;&#21152;&#36335;&#30001;&#65306;<\/p>\n<pre><code class=\"language-php\">use AppHttpControllersPermissionsController;\n\nRoute::get('\/dashboard', [PermissionsController::class, 'index'])-&gt;middleware(['auth', 'permission:view-dashboard']);<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#21019;&#24314;&#25511;&#21046;&#22120;&#26041;&#27861;<\/strong>&#65306;\n&#22312; <code>app\/Http\/Controllers\/PermissionsController.php<\/code> &#25991;&#20214;&#20013;&#28155;&#21152; <code>index<\/code> &#26041;&#27861;&#65292;&#24182;&#20351;&#29992; <code>can<\/code> &#26041;&#27861;&#26469;&#39564;&#35777;&#26435;&#38480;&#65306;<\/p>\n<pre><code class=\"language-php\">namespace AppHttpControllers;\n\nuse IlluminateSupportFacadesAuth;\nuse IlluminateHttpRequest;\n\nclass PermissionsController extends Controller\n{\n   public function index()\n   {\n       if (Auth::check() &amp;&amp; Auth::user()-&gt;can('view-dashboard')) {\n           return view('dashboard');\n       } else {\n           return redirect()-&gt;route('login');\n       }\n   }\n}<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#21019;&#24314; Blade &#27169;&#26495;<\/strong>&#65306;\n&#21019;&#24314;&#19968;&#20010;&#21517;&#20026; <code>dashboard.blade.php<\/code> &#30340;&#35270;&#22270;&#25991;&#20214;&#24182;&#22312;&#20854;&#20013;&#26174;&#31034;&#19968;&#20123;&#20869;&#23481;&#65306;<\/p>\n<pre><code class=\"language-blade\">&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;Dashboard&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n   &lt;h1&gt;Welcome to the Dashboard!&lt;\/h1&gt;\n   &lt;!-- Your dashboard content here --&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#30830;&#20445;&#26435;&#38480;&#23384;&#22312;<\/strong>&#65306;\n&#30830;&#20445;&#20320;&#22312; <code>app\/Providers\/AuthServiceProvider.php<\/code> &#25991;&#20214;&#20013;&#30340; <code>boot<\/code> &#26041;&#27861;&#20013;&#27880;&#20876;&#20102;&#26435;&#38480;&#65306;<\/p>\n<pre><code class=\"language-php\">protected function boot()\n{\n   $this-&gt;registerPolicies();\n\n   Gate::define('view-dashboard', function ($user) {\n       \/\/ &#33258;&#23450;&#20041;&#26435;&#38480;&#36923;&#36753;\n       return $user-&gt;hasRole('admin') || $user-&gt;hasPermission('view-dashboard');\n   });\n}<\/code><\/pre>\n<\/li>\n<\/ol>\n<p>&#36890;&#36807;&#20197;&#19978;&#27493;&#39588;&#65292;&#20320;&#21487;&#20197;&#22312; Laravel &#20013;&#20351;&#29992; <code>Auth<\/code> facade &#21644; <code>Gate<\/code> &#31867;&#26469;&#39564;&#35777;&#29992;&#25143;&#26159;&#21542;&#20855;&#26377;&#29305;&#23450;&#30340;&#26435;&#38480;&#12290;&#22914;&#26524;&#29992;&#25143;&#27809;&#26377;&#26435;&#38480;&#65292;&#20182;&#20204;&#23558;&#34987;&#37325;&#23450;&#21521;&#21040;&#30331;&#24405;&#39029;&#38754;&#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;&#26500;&#24314;Web&#24212;&#29992;&#31243;&#24207;&#26102;&#65292;&#26377;&#25928;&#31649;&#29702;&#29992;&#25143;&#26435;&#38480;&#33267;&#20851;&#37325;&#35201;&#65292;&#20197;&#30830;&#20445;&#27599;&#20010;&#29992;&#25143;&#21482;&#33021;&#26597;&#30475;&#25110;&#25805;&#20316;&#19982;&#20854;&#26435;&#38480;&#30456;&#21305;&#37197;&#30340;&#20869;&#23481;&#12290;Laravel&#65292;&#19968;&#20010;&#24378;&#22823;&#30340;PHP&#26694;&#26550;&#65292;&#25552;&#20379;&#20102;&#22810;&#31181;&#22788;&#29702;&#25480;&#26435;&#30340;&#26041;&#24335;&#12290;&#22312;Blade&#27169;&#26495;&#24341;&#25806;&#20013;&#65292;Laravel&#30340;&#27169;&#26495;&#31995;&#32479;&#20801;&#35768;&#26681;&#25454;&#29992;&#25143;&#30340;&#26435;&#38480;&#26465;&#20214;&#26174;&#31034;&#20803;&#32032;&#12290;<\/p><p>&#26412;&#25945;&#31243;&#23558;&#25351;&#23548;&#24744;&#36890;&#36807;Blade&#27169;&#26495;&#20013;&#30340;&#26435;&#38480;&#39564;&#35777;&#36807;&#31243;&#65292;&#20174;&#22522;&#26412;&#31034;&#20363;&#21040;&#39640;&#32423;&#20351;&#29992;&#12290;&#25105;&#20204;&#23558;&#28085;&#30422;&#20869;&#32622;&#30340;&#25351;&#20196;&#12289;&#20351;&#29992;&#31574;&#30053;&#20197;&#21450;&#19968;&#20123;&#21487;&#20197;&#24110;&#21161;&#24744;&#39640;&#25928;&#31649;&#29702;&#26435;&#38480;&#30340;&#26368;&#20339;&#23454;&#36341;&#12290;&#35753;&#25105;&#20204;&#24320;&#22987;&#21543;&#12290;<\/p><h2>&#29702;&#35299;Laravel&#20013;&#30340;&#25480;&#26435;&#65288;Authorization&#65289;<\/h2><p>Laravel &#25552;&#20379;&#20102;&#20004;&#31181;&#20027;&#35201;&#30340;&#25480;&#26435;&#22788;&#29702;&#26041;&#24335;&#65306;&#38376;&#21644;&#31574;&#30053;&#12290;&#38376;&#26159;&#38381;&#21253;&#65292;&#29992;&#20110;&#30830;&#23450;&#29992;&#25143;&#26159;&#21542;&#34987;&#25480;&#26435;&#25191;&#34892;&#29305;&#23450;&#30340;&#25805;&#20316;&#65307;&#32780;&#31574;&#30053;&#21017;&#26159;&#22260;&#32469;&#29305;&#23450;&#27169;&#22411;&#25110;&#36164;&#28304;&#32452;&#32455;&#25480;&#26435;&#36923;&#36753;&#30340;&#31867;&#12290;<\/p><h3>&#23450;&#20041;&#38376;&#21644;&#25919;&#31574;<\/h3><pre><code>\/\/ Example of defining a gate in AuthServiceProvider\nGate::define('edit-post', function ($user, $post) {\n    return $user-&gt;id === $post-&gt;user_id;\n});\n\n\/\/ Example of a policy method\npublic function update(User $user, Post $post)\n{\n    return $user-&gt;id === $post-&gt;user_id;\n}\n<\/code><\/pre><h2>&#22522;&#26412;&#26435;&#38480;&#39564;&#35777;&#31034;&#20363;<\/h2><p>&#35753;&#25105;&#20204;&#20174;Blade&#27169;&#26495;&#20013;&#30340;&#25480;&#26435;&#22522;&#26412;&#25805;&#20316;&#24320;&#22987;&#12290;<\/p><h3>&#20351;&#29992;@can&#25351;&#20196;&#12290;<\/h3><pre><code>&lt;!-- Check if a user can edit a post within a Blade template --&gt;\n@can('edit-post', $post)\n    &lt;button&gt;Edit Post&lt;\/button&gt;\n@endcan\n<\/code><\/pre><p>&#19978;&#36848;&#20195;&#30721;&#20165;&#22312;&#31614;&#32626;&#30340;&#29992;&#25143;&#26377;&#26435;&#32534;&#36753;&#25351;&#23450;&#24086;&#23376;&#26102;&#26174;&#31034;&ldquo;&#32534;&#36753;&#24086;&#23376;&rdquo;&#25353;&#38062;&#12290;<code>@can<\/code>&#26041;&#21521;&#25351;&#20196;&#25509;&#21463;&#20004;&#20010;&#21442;&#25968;&#65306;&#33021;&#21147;&#21644;&#30456;&#20851;&#27169;&#22411;&#12290;<\/p><h3>&#20351;&#29992;@cannot&#25351;&#20196;<\/h3><pre><code>&lt;!-- Opposite of @can. If a user cannot edit a post, show a message --&gt;\n@cannot('edit-post', $post)\n    &lt;p&gt;You do not have permission to edit this post.&lt;\/p&gt;\n@endcannot\n<\/code><\/pre><p>&#23545;&#19981;&#36215;&#65292;&#25105;&#19981;&#33021;&#29702;&#35299;&#36825;&#21477;&#35805;&#12290;<code>@cannot<\/code>&#20989;&#25968;&#30340;&#20316;&#29992;&#19982;&#25351;&#20196;&#30456;&#21453;&#12290;<code>@can<\/code>&#24403;&#29992;&#25143;&#27809;&#26377;&#26435;&#38480;&#25191;&#34892;&#25805;&#20316;&#26102;&#65292;&#26174;&#31034;&#20869;&#23481;&#12290;<\/p><h2>&#26089;&#26399;&#20351;&#29992;&#26435;&#38480;&#39564;&#35777;<\/h2><h3>&#22312;Blade&#20013;&#65292;inline policies&#65288;&#21363;inline&#31574;&#30053;&#65289;&#26159;&#25351;&#23884;&#20837;&#21040;&#23545;&#35937;&#20013;&#30340;&#31574;&#30053;&#23450;&#20041;&#12290;&#36825;&#20123;&#31574;&#30053;&#21487;&#20197;&#22312;&#21019;&#24314;&#23545;&#35937;&#26102;&#31435;&#21363;&#24212;&#29992;&#65292;&#32780;&#19981;&#26159;&#22312;&#23545;&#35937;&#23454;&#20363;&#21270;&#21518;&#36890;&#36807;setter&#26041;&#27861;&#26469;&#35774;&#32622;&#12290;&#36825;&#21487;&#20197;&#25552;&#39640;&#24615;&#33021;&#65292;&#22240;&#20026;&#19981;&#38656;&#35201;&#39069;&#22806;&#30340;&#35843;&#29992;&#20197;&#35774;&#32622;&#23646;&#24615;&#12290; inline policies&#36890;&#24120;&#29992;&#20110;&#38656;&#35201;&#24555;&#36895;&#21709;&#24212;&#21464;&#21270;&#30340;&#24212;&#29992;&#31243;&#24207;&#25110;&#31995;&#32479;&#20013;&#12290;&#20363;&#22914;&#65292;&#22312;&#25968;&#25454;&#24211;&#25805;&#20316;&#20013;&#65292;&#19968;&#20010;&#31616;&#21333;&#30340;inline policy&#21487;&#33021;&#21482;&#26159;&#26356;&#26032;&#19968;&#26465;&#35760;&#24405;&#65292;&#32780;&#26080;&#38656;&#37325;&#26032;&#26597;&#35810;&#25972;&#20010;&#34920;&#12290;<\/h3><p>&#34429;&#28982;&#24744;&#21487;&#20197;&#22312;&#25919;&#31574;&#31867;&#20013;&#20026;&#27599;&#20010;&#25805;&#20316;&#23450;&#20041;&#21333;&#29420;&#30340;&#26041;&#27861;&#65292;&#20294;&#20063;&#21487;&#20197;&#22312; Blade &#25991;&#20214;&#20013;&#30452;&#25509;&#32534;&#20889;&#20869;&#32852;&#31574;&#30053;&#65292;&#20351;&#29992;&#30456;&#21516;&#30340;&#35821;&#27861;&#12290;<code>@can<\/code>and &#26159;&#20013;&#25991;&#37324;&#34920;&#31034;&ldquo;&#24182;&#19988;&rdquo;&#30340;&#24847;&#24605;&#65292;&#27809;&#26377;&#29305;&#27530;&#21547;&#20041;&#12290;<code>@cannot<\/code>&#25351;&#20196;&#12290;<\/p><h3>&#26681;&#25454;&#26435;&#38480;&#26174;&#31034;&#19981;&#21516;&#30340;&#20869;&#23481;&#12290;<\/h3><pre><code>&lt;!-- Using @can and @else to show different content --&gt;\n@can('edit-post', $post)\n    &lt;button&gt;Edit Post&lt;\/button&gt;\n@else\n    &lt;p&gt;Only the author can edit this post.&lt;\/p&gt;\n@endcan\n<\/code><\/pre><p>&#22312;&#36825;&#31181;&#22330;&#26223;&#19979;&#65292;&#29992;&#25143;&#22914;&#26524;&#21487;&#20197;&#32534;&#36753;&#24086;&#23376;&#65292;&#21017;&#20250;&#30475;&#21040;&#19968;&#20010;&ldquo;&#32534;&#36753;&#24086;&#23376;&rdquo;&#25353;&#38062;&#65307;&#21542;&#21017;&#65292;&#20250;&#26174;&#31034;&#19968;&#26465;&#28040;&#24687;&#12290;<\/p><h2>&#27491;&#22312;&#26816;&#26597;&#22810;&#20010;&#26435;&#38480;&#12290;<\/h2><p>&#22312;&#26576;&#20123;&#24773;&#20917;&#19979;&#65292;&#20320;&#38656;&#35201;&#21516;&#26102;&#26816;&#26597;&#22810;&#20010;&#26435;&#38480;&#12290;Laravel&#22312;&#36825;&#26041;&#38754;&#20570;&#24471;&#38750;&#24120;&#31616;&#21333;&#12290;<\/p><h3>&#20351;&#29992; @can &#30452;&#25509;&#26631;<\/h3><pre><code>@canany(['publish-post', 'unpublish-post'], $post)\n    &lt;button&gt;Publish\/Unpublish Post&lt;\/button&gt;\n@elsecan('edit-post', $post)\n    &lt;button&gt;Edit Post&lt;\/button&gt;\n@else\n    &lt;p&gt;You cannot manage this post.&lt;\/p&gt;\n@endcanany\n<\/code><\/pre><p>&#23545;&#19981;&#36215;&#65292;&#24744;&#30340;&#38382;&#39064;&#19981;&#26126;&#30830;&#12290;&#35831;&#25552;&#20379;&#26356;&#22810;&#30340;&#20449;&#24687;&#25110;&#28548;&#28165;&#19968;&#19979;&#12290;<code>@canany<\/code>&#35813;&#25351;&#20196;&#23558;&#22312;&#29992;&#25143;&#20855;&#22791;&#25351;&#23450;&#33021;&#21147;&#20043;&#19968;&#26102;&#28210;&#26579;&#25353;&#38062;&#12290;<\/p><h2>&#32467;&#35770;&#12290;<\/h2><p>&#25480;&#26435;&#22312; Laravel &#30340; Blade &#27169;&#26495;&#20013;&#38750;&#24120;&#24378;&#22823;&#19988;&#28789;&#27963;&#12290;&#20351;&#29992;&#35832;&#22914;<code>@can<\/code>&#22909;&#30340;&#65292;&#35831;&#25552;&#20379;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<code>@cannot<\/code>&#21644;&#25105;&#26377;&#20160;&#20040;&#20107;&#21527;&#65311;<code>@canany<\/code>&#24744;&#21487;&#20197;&#36890;&#36807;&#35843;&#25972;&#29992;&#25143;&#22312;&#24212;&#29992;&#31243;&#24207;&#27169;&#26495;&#20013;&#30340;&#21487;&#35265;&#24615;&#21644;&#21487;&#25805;&#20316;&#24615;&#26469;&#24494;&#35843;&#24744;&#30340;&#24212;&#29992;&#12290;&#25353;&#29031;&#26412;&#25351;&#21335;&#20013;&#30340;&#23454;&#36341;&#65292;&#24744;&#23558;&#33021;&#22815;&#26500;&#24314;&#19968;&#20010;&#23433;&#20840;&#19988;&#29992;&#25143;&#21451;&#22909;&#30340;&#24212;&#29992;&#31243;&#24207;&#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 &#26159;&#19968;&#20010;&#38750;&#24120;&#27969;&#34892;&#30340; PHP &#24320;&#21457;&#26694;&#26550;&#65292;&#23427;&#25552;&#20379;&#20102;&#24378;&#22823;&#30340;&#21151;&#33021;&#26469;&#31649;&#29702;&#25968;&#25454;&#24211;&#21644;&#19982;&#20043;&#20132;&#20114;&#12290;&#20854;&#20013;&#65292;&#39564;&#35777;&#26435;&#38480;&#26159; Laravel &#25552;&#20379;&#30340;&#19968;&#20010;&#37325;&#35201;&#29305;&#24615;&#65292;&#21487;&#20197;&#24110;&#21161;&#24744;&#30830;&#20445;&#21482;&#26377;&#25480;&#26435;&#30340;&#29992;&#25143;&#25165;&#33021;&#35775;&#38382;&#29305;&#23450;&#30340;&#36164;&#28304;&#12290;<\/p>\n<p>&#35201;&#20351;&#29992; Laravel &#30340;&#26435;&#38480;&#31995;&#32479;&#36827;&#34892;&#39564;&#35777;&#65292;&#24744;&#21487;&#20197;&#25353;&#29031;&#20197;&#19979;&#27493;&#39588;&#25805;&#20316;&#65306;<\/p>\n<h3>1. &#37197;&#32622;&#26435;&#38480;<\/h3>\n<p>&#39318;&#20808;&#65292;&#38656;&#35201;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#26435;&#38480;&#27169;&#22411;&#12290;&#36825;&#23558;&#29992;&#20110;&#23384;&#20648;&#29992;&#25143;&#30340;&#26435;&#38480;&#20449;&#24687;&#12290;&#20363;&#22914;&#65292;&#20551;&#35774;&#25105;&#20204;&#26377;&#19968;&#20010;&#21517;&#20026; <code>User<\/code> &#30340;&#27169;&#22411;&#65292;&#25105;&#20204;&#38656;&#35201;&#20026;&#35813;&#27169;&#22411;&#28155;&#21152;&#19968;&#20123;&#26435;&#38480;&#23383;&#27573;&#65306;<\/p>\n<pre><code class=\"language-php\">use IlluminateDatabaseEloquentModel;\n\nclass User extends Model\n{\n    protected $fillable = ['name', 'email', 'password'];\n\n    public function permissions()\n    {\n        return $this-&gt;belongsToMany('AppPermission');\n    }\n}<\/code><\/pre>\n<h3>2. &#22312; Blade &#27169;&#26495;&#20013;&#39564;&#35777;&#26435;&#38480;<\/h3>\n<p>&#35201;&#22312; Blade &#27169;&#26495;&#20013;&#39564;&#35777;&#26435;&#38480;&#65292;&#21482;&#38656;&#22312;&#30456;&#24212;&#30340;&#35270;&#22270;&#25991;&#20214;&#65288;&#22914; <code>users\/show.blade.php<\/code>&#65289;&#20013;&#21152;&#20837;&#26435;&#38480;&#39564;&#35777;&#36923;&#36753;&#21363;&#21487;&#12290;&#36825;&#37324;&#23637;&#31034;&#19968;&#20010;&#31616;&#21333;&#30340;&#20363;&#23376;&#65306;<\/p>\n<pre><code class=\"language-blade\">@if(Auth::user()-&gt;can('view-users'))\n    &lt;h2&gt;{{ Auth::user()-&gt;name }}'s Profile&lt;\/h2&gt;\n@endif<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#22914;&#26524;&#24403;&#21069;&#29992;&#25143;&#20855;&#26377;&ldquo;&#26597;&#30475;&#29992;&#25143;&rdquo;&#26435;&#38480;&#65292;&#21017;&#26174;&#31034;&#29992;&#25143;&#21517;&#65307;&#21542;&#21017;&#65292;&#36339;&#36716;&#21040;&#30331;&#24405;&#39029;&#38754;&#12290;<\/p>\n<h3>3. &#20351;&#29992; Laravel &#21629;&#20196;&#34892;&#24037;&#20855;&#39564;&#35777;&#26435;&#38480;<\/h3>\n<p>&#38500;&#20102;&#22312;&#27169;&#26495;&#20013;&#39564;&#35777;&#26435;&#38480;&#22806;&#65292;&#36824;&#21487;&#20197;&#36890;&#36807; Laravel &#21629;&#20196;&#34892;&#24037;&#20855;&#65288;&#22914; <code>laravel new<\/code> &#25110; <code>laravel new --force<\/code>) &#26469;&#39564;&#35777;&#26435;&#38480;&#12290;&#20855;&#20307;&#26469;&#35828;&#65292;&#21487;&#20197;&#20351;&#29992; <code>make:auth<\/code> &#21629;&#20196;&#21019;&#24314;&#26032;&#30340;&#26435;&#38480;&#39564;&#35777;&#25511;&#21046;&#22120;&#12290;<\/p>\n<pre><code class=\"language-bash\">$ make:auth\nCreating the auth controller in \/path\/to\/your\/app\/controllers\/AuthController.php\n\nYou can now use this class to create and manage your users, roles, and permissions.<\/code><\/pre>\n<p>&#28982;&#21518;&#65292;&#26681;&#25454;&#23454;&#38469;&#24773;&#20917;&#22312; <code>AuthController.php<\/code> &#20013;&#28155;&#21152;&#30456;&#24212;&#30340;&#39564;&#35777;&#26041;&#27861;&#65306;<\/p>\n<pre><code class=\"language-php\">namespace AppHttpControllersAuth;\n\nuse IlluminateSupportFacadesRoute;\nuse IlluminateFoundationAuthAuthenticatesUsers;\nuse IlluminateHttpRequest;\n\nclass AuthController extends Controller\n{\n    \/*\n     * Show the application login page.\n     *\/\n    public function showLoginForm(Request $request)\n    {\n        return view('auth.login');\n    }\n\n    \/*\n     * Handle a login attempt.\n     *\n     * @param IlluminateHttpRequest $request\n     * @return mixed\n     *\/\n    public function authenticate(Request $request)\n    {\n        if ($request-&gt;input('remember') === null) {\n            \/\/ If remember is not set, clear the session\n            $request-&gt;session()-&gt;forget('_token');\n        }\n\n        return Authenticator::authenticate($request);\n    }\n}\n\n\/\/ Authenticator.php\nuse IlluminateContractsAuthGuard;\nuse IlluminateContractsAuthMustVerifyEmail;\nuse IlluminateFoundationAuthUser as Authenticatable;\n\nclass Authenticator implements MustVerifyEmail\n{\n    \/**\n     * Get the user model responsible for performing password resets.\n     *\n     * @return string\n     *\/\n    public static function model()\n    {\n        return Authenticatable::model();\n    }\n\n    \/**\n     * Validate and authenticate a given credentials.\n     *\n     * @param IlluminateHttpRequest $request\n     * @return bool|IlluminateContractsAuthAccessGate|mixed\n     *\/\n    public static function authenticate(Guard $guard, Request $request)\n    {\n        try {\n            $credentials = $request-&gt;only($guard-&gt;getUsername() . '.email', $guard-&gt;getUsername() . '.password');\n\n            $user = $guard-&gt;attempt($credentials);\n\n            if (is_null($user)) {\n                throw new Exception(\"Sorry, that account doesn't exist.\");\n            }\n\n            if (!$user instanceof Authenticatable) {\n                throw new Exception(\"That was an unexpected error.\");\n            }\n\n            return $user;\n        } catch (Exception $e) {\n            return false;\n        }\n    }\n}<\/code><\/pre>\n<p>&#36825;&#26679;&#65292;&#24744;&#23601;&#21487;&#20197;&#22312; Laravel &#30340;&#21508;&#20010;&#32452;&#20214;&#20013;&#36731;&#26494;&#22320;&#20351;&#29992;&#26435;&#38480;&#39564;&#35777;&#20102;&#12290;&#24076;&#26395;&#36825;&#20010;&#25351;&#21335;&#23545;&#24744;&#26377;&#25152;&#24110;&#21161;&#65281;<\/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;&#20351;&#29992; Auth facade &#26469;&#39564;&#35777;&#29992;&#25143;&#038;#2615..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[44],"tuisongtax":[],"class_list":["post-856","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\/856","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=856"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=856"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=856"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=856"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}