Laravel?? ?? ??? ?? ????? ???? ??
Nov 04, 2023 am 10:40 AMLaravel?? ?? ??? ?? ????? ???? ??
? ??????? ??? ???? ?? ??? ??? ??? ???? ???? ???? ?? ? ????? ????. Laravel? ??? ?? ??? ???? ?? ????? ????? ?? ??? ??? ???? ?? ?? PHP ????????. ? ???? ????? ???? Laravel?? ?? ??? ???? ??? ???? ???? ?? ??? ?????.
- ?? ???? ???
?? ?? ??? ???? ?? ????? ???? ???. ????? HTTP ??? ????? ?? Laravel ?????? ???????. Artisan ??? ???? ?? ????? ??? ??? ? ????.
???? ?? ???? ?? ????? ??? ? ?? ??? ?????.
php artisan make:middleware CheckPermission
?? ? Laravel? app/Http/? ?? <code>CheckPermission.php
??? ???? ?????. ????< /code> ????. CheckPermission.php
文件,位于app/Http/Middleware
目錄下。
- 編輯權(quán)限中間件
打開(kāi)CheckPermission.php
文件,可以看到其中的代碼模板:
<?php namespace AppHttpMiddleware; use Closure; class CheckPermission { public function handle($request, Closure $next) { // 在這里添加權(quán)限校驗(yàn)邏輯 return $next($request); } }
在handle
方法中,我們可以編寫(xiě)具體的權(quán)限校驗(yàn)邏輯。例如,我們可以從當(dāng)前用戶的信息中獲取其角色,然后根據(jù)角色判斷是否具有訪問(wèn)特定路由的權(quán)限。
以下是一個(gè)簡(jiǎn)單的示例,我們假設(shè)User
模型中有一個(gè)role
字段,代表用戶的角色:
public function handle($request, Closure $next) { // 獲取當(dāng)前用戶的角色 $role = $request->user()->role; // 檢查角色是否具有訪問(wèn)權(quán)限 if ($role !== 'admin') { // 如果沒(méi)有權(quán)限,可以根據(jù)需求進(jìn)行跳轉(zhuǎn),或者返回相應(yīng)的錯(cuò)誤信息 return redirect()->back()->with('error', 'You do not have permission to access this page'); } return $next($request); }
在上述示例中,如果當(dāng)前用戶的角色不是admin
,則會(huì)將用戶重定向回上一頁(yè),并攜帶一個(gè)錯(cuò)誤消息。當(dāng)然,你可以根據(jù)實(shí)際需求進(jìn)行更復(fù)雜的權(quán)限校驗(yàn)邏輯。
- 注冊(cè)權(quán)限中間件
接下來(lái),我們需要將權(quán)限中間件注冊(cè)到Laravel的路由中,以便實(shí)現(xiàn)權(quán)限控制。
打開(kāi)app/Http/Kernel.php
文件,找到$routeMiddleware
屬性。在屬性中添加以下代碼:
'checkPermission' => AppHttpMiddlewareCheckPermission::class,
將checkPermission
作為中間件的名稱(chēng),CheckPermission::class
是指向我們剛才創(chuàng)建的中間件類(lèi)的引用。
- 使用權(quán)限中間件
現(xiàn)在,我們可以在需要進(jìn)行權(quán)限控制的路由上使用權(quán)限中間件了。
在routes/web.php
文件中,添加以下代碼:
Route::get('/admin/dashboard', function () { // 該路由需要管理員權(quán)限 return view('admin.dashboard'); })->middleware('checkPermission');
在上述示例中,我們將/admin/dashboard
路由與checkPermission
中間件關(guān)聯(lián)起來(lái)。這意味著只有具有admin
角色的用戶才能訪問(wèn)該路由。
當(dāng)用戶訪問(wèn)/admin/dashboard
時(shí),Laravel將自動(dòng)調(diào)用CheckPermission
中間件的handle
- ?? ???? ??
CheckPermission.php
??? ?? ?? ???? ? ? ????:
handle
In ? ??? ???? ?? ?? ?? ??? ??? ? ????. ?? ??, ?? ???? ???? ??? ??? ??, ??? ???? ?? ??? ?? ??? ??? ??? ??? ??? ? ????. ??????? ??? ????. User
??? ???? ??? ???? role
??? ??? ?????. ??rrreee??? ???, ?? ???? admin
??? ??? ?? ???? ?? ???? ?? ???? ?????? ??. ?? ?? ??? ?? ? ??? ?? ?? ??? ??? ?? ????. ??- ???? ???? ????????????, ?? ??? ???? ?? Laravel? ???? ?? ????? ???? ???. ????
app/Http/Kernel.php
??? ?? $routeMiddleware
??? ??????. ??? ?? ??? ?????. ??rrreee?? checkPermission
? ????? ???? ?? CheckPermission::class
? ?? ?? ???? ???? ?? ??? ???. ??- ???? ???? ?????????? ?? ??? ??? ???? ?? ????? ??? ? ????. ????
routes/web.php
??? ?? ??? ?????: ??rrreee??? ???? /admin/dashboard
??? ? ????? >checkPermission????? ???? ????. ?, <code>admin
??? ?? ???? ? ??? ???? ? ????. ???????? /admin/dashboard
? ????? Laravel? ?? ??? ?? CheckPermission
????? handle
???? ???? ?????. ??? ???? ?? ??? ?? ?????, ??? ??? ????? ??? ??? ?? ?????. ???????????? ??? ?? ????? ?????? Laravel??? ??? ???? ??? ?? ??? ? ????. ? ????? ????? ??? ???? ??? ???? ???? ?? ??? ?????. ?? ?? ?? ??? ??? ????. ?? ??? ?? ? ??? ?? ?? ??? ??? ?? ????. ? ?? Laravel?? ?? ??? ???? ? ??? ??? ????! ??
? ??? Laravel?? ?? ??? ?? ????? ???? ??? ?? ?????. ??? ??? PHP ??? ????? ?? ?? ??? ?????!

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

PHP?? ?? ??? ???? ? ?? ?? ??? ????. 1. php.ini? ?? ??? ??; 2. ? ?? (? : Apache? Setenv ?? nginx? FastCGI_Param)? ??????. 3. PHP ?????? putenv () ??? ??????. ? ??? Php.ini? ????? ??? ???? ??? ???? ? ?? ??? ?? ???? ????? ???? Putenv ()? ?? ??? ?????. ?? ???? ?? ?? (? : php.ini ?? ? ?? ??)? ???? ????. ?? ?? ??? ??? ?? ??? ????? ???? ?? ????.

Laravel? ?? ??? ?? ?? ??? ?? ?? ??? ???? ??? ??????. ?? ???? ?? ??? ????? ? ???? I/O ?? ? ?? ?? ??? ???? ???? ??? ?? ? ????. 1. ?? ????? ?? ? ? ???????? ??? ????? ?? ???? ??????. 2. ??? ? ??? ?? ? ? PhPartisAnconfig? ?? ???????. 3. ?? ??? ??? ??? ???? ?? ?? ?? ???? ???? ????. 4. ?? ?? ??? ???? ?? ??? ??? .env ??? ???? ?? ???????.

PHP ????? ?? ??? ??? ? ??? ??? CI (Continuous Integration) ????? ???? ? ????. 1. DockerFile? ???? ?? ???, ?? ??, ??? ?? ? ?? ??? ???? PHP ??? ?????. 2. Gitlabci? ?? CI/CD ??? ???? .gitlab-ci.yml ??? ?? ??, ??? ? ?? ??? ???? ?? ??, ??? ? ??? ?????. 3. PHPUNIT? ?? ??? ??? ??? ???? ?? ?? ? ???? ???? ????????. 4. Kubernetes? ?? ?? ?? ??? ???? ?? .yaml ??? ?? ?? ??? ?????. 5. Dockerfile ??? ? ??? ??? ??????

Laravel? eloquentscopes? ?? ??? ??? ??? ?????? ?? ?? ??? ????? ?????. 1. ?? ??? ???? ???? ???? ???? Post :: published (); 2. ??? ??? ?? ??? ???? ???? ?? ??? ?? ?? ?? ??? ???? ???? ??? ?????? ??? ???? ???????. 3. ????? ?? ?? ?? ??? ??? ?? ?? ??? ?? ? ? ??? ?? ? ? ?? ?? ??? ?????. 4. ?? ??? ? ??? ?? ???? ? ??? ? ?? ??, ?? ??, ?? ???? ? ?? ?????????.

CreateAhelpers.phpfileInapp/helperswithCustOmFunctionsikeFormatPrice, isactiveroute, andisAdmin.2.addTheFileTothe "??"sectionOfcomposer.jsonUnderAutoLoad.3.runcomposerDump-AUTOLOADTOMAKETHINGTICTIONSGLOBELYAVAILABLE.4.USETHEHELPERFUNCUNTION

?? ?? ?? : ?? ????? PHP? ?? Error_Log ()? ??? ? ????. ????? ???? ??? ?? ??? ?????? ???? ?? ??? ? ?? ??? ???? ??? ?? ???, ??, ?? ? ?? ? ?? ?? ??? ???? ??? ??????. 2. ??? ?? ?? : ??? ??? ??? ??? ? ??? ?? ??? ??? ?? ??? ??? ??????? ??????. MySQL/PostgreSQL? ???? ??? ? ???? ??????. Elasticsearch Kibana? ? ???/? ???? ?????. ???, ??? ?? ? ??? ? ?? ??? ?? ??????. 3. ?? ? ?? ????? : ??, ???, ?? ? ??? ??? ??????. Kibana? ?? ????? PHP ??? ?? ?? ?????? ???? ???? ?????? ???? ??? ? ?? ??? ??? ? ????.

??, ??, ?? ?? ? ?? ??? ???? ?? ??? ?? ? ?? ???? ?????. 2. ?? ???? ???? ?? ??? ??? SONGSTOMONY ? HASMANY ?? ??; 3. ?? ? ? ?? ? ?? ??? ????? (?? ???? ?? ??? ? ??). 4. ?? ? ?? ??? ???? ?? ??? ???? ?? ? ?? ??? ???? ?? ??? ?????. 5. ?? ???? ??? ?? (?? ??)? ???? ?? ????? ??????. 6. ?? ??? ?? ??? ???? Laravel Signature URL? ???? ??? ??????. 7. ? ?? ?? ? ? ?? ??? ?? ?? ??? ?? ??? ?????. ?????? ??, ?? ?? ??? ??????????.

USEMOCKERYFORCUSTOMDENCENTICESBYSETEXPINTIONSWITHSHOULDRECEIVE ()
