Laravel ?? ??? ?? ?? ??: ?? ?? ? ??? ???? ??
Nov 03, 2023 am 08:39 AMLaravel ?? ?? ?? ??: ?? ?? ? ??? ???? ??
??:
?? ??? ? ??????? ??? ? ?? ??? ?????. Laravel ?????? ?? ??? ???? ?? ?? ??? ??? ??? ?????. ??? ?? ?? ???? ?? ??? ?? ??? ???? ??? ???? ??? ???? ???? ???? ?? ???? ???? ???. ? ????? ?? ??? Laravel? ???? ??? ??? ???? ??? ?????. ??? ??? ??? ?? ?? ???? ?? ??? ???????.
1. Laravel ?? ??? ??
?? ?? ? ??? ???? ??? ???? ?? ?? Laravel ?? ???? ?? ??? ?? ??? ???????. Laravel? ?? ??? ???? ?? Gates? ??? ?????.
Gates? ??? ??? ???? ?????. Gate? ???? ????? ?? ??? ??? ?? ??? ? ????. ?? ??, ????? "?? ??" ??? ??? ???? ?? Gate? ??? ? ????.
Gate::define('edit-article', function($user) { return $user->hasPermission('edit_article'); });
Gate::allows('edit-article')
???? ???? ???? ? ????. code ?? ????? "?? ??" ??? ??? ?????. Gate::allows('edit-article')
方法,我們可以在代碼中檢查當前用戶是否具有“編輯文章”的權限。
Policies是一個定義在模型上的類,用于控制特定模型的權限。例如,我們可以為Article
模型定義一個ArticlePolicy
類來控制文章的訪問和編輯權限:
class ArticlePolicy { public function view(User $user, Article $article) { return $user->hasPermission('view_article') && $article->isVisible(); } public function edit(User $user, Article $article) { return $user->hasPermission('edit_article') && $user->id == $article->user_id; } }
通過定義這些方法,我們可以在控制器或視圖中使用$this->authorize()
方法來檢查當前用戶是否具有相應的權限。
二、處理權限沖突
權限沖突是指一個用戶同時具有兩個或多個相互沖突的權限。例如,一個用戶既具有“編輯文章”權限又具有“僅查看”權限,但如果我們不加任何處理的話,這將導致用戶既能編輯文章又能查看文章,顯然不符合我們的意圖。
為了處理權限沖突,我們可以在定義Gates和Policies時添加額外的條件來限制用戶權限的范圍。例如,我們可以修改'edit-article'
的Gate定義如下:
Gate::define('edit-article', function ($user) { return $user->hasPermission('edit_article') && !$user->hasPermission('view_article'); });
這樣,當用戶同時具有“編輯文章”和“查看文章”權限時,只有“編輯文章”權限會生效。
類似地,我們也可以在Policies中添加條件來限制用戶權限的范圍,以防止權限沖突的發(fā)生。例如,我們可以修改ArticlePolicy
類的view
方法如下:
public function view(User $user, Article $article) { return $user->hasPermission('view_article') && $article->isVisible() && !$user->hasPermission('edit_article'); }
這樣,當用戶同時具有“查看文章”和“編輯文章”權限時,只有“查看文章”權限會生效。
三、處理權限重疊
權限重疊是指一個用戶具有多個權限,并且這些權限在某些方面有部分重疊。在這種情況下,我們需要使用更加復雜的條件和規(guī)則來處理權限的判斷。
我們可以使用Laravel的Gate閉包函數或Policy類中的授權方法來處理權限重疊。例如,假設我們有一個Article
模型和兩個權限,分別是“編輯他人文章”和“編輯自己的文章”。我們可以在ArticlePolicy
類中定義以下方法來處理這兩個權限的重疊:
public function editOther(User $user) { return $user->hasPermission('edit_other_article') && !$user->hasPermission('edit_own_article'); } public function editOwn(User $user, Article $article) { return $user->hasPermission('edit_own_article') && $user->id == $article->user_id; }
然后,在控制器中使用$this->authorize()
Article
??? ?? ArticlePolicy
???? ???? ?? ??? ? ?? ??? ??? ? ????. public function edit(Article $article) { $this->authorize('editOther', $article) || $this->authorize('editOwn', $article); // 其他編輯邏輯... }? ???? ????
? ??? ? ????. $this->authorize()
???? ???? ?? ????? ?? ??? ??? ?????.
2. ?? ?? ??
?? ??? ???? ??? ? ? ??? ???? ??? ??? ??? ?????. ?? ??, ????? "?? ??" ??? "?? ??" ??? ?? ??? ?? ??? ??? ??? ???? ??? ???? ??? ? ? ?? ??? ?? ??? ??? ??? ???? ????. .
???? ??? ???? ?? ??? ? ??? ??? ? ?? ??? ???? ??? ?? ??? ??? ? ????. ?? ??,'edit-article'
? Gate ??? ??? ?? ??? ? ????: ??rrreee????? ???? ????? "?? ??" ? "?? ??" ??? ?? ?? ???? "?? ??" ??? ?????. ????????? ??? ??? ???? ??? ?? ??? ???? ?? ??? ???? ?? ??? ?? ????. ?? ?? ArticlePolicy
???? view
???? ??? ?? ??? ? ????. ??rrreee???? ??? ???? "?? ??"? "??" ??' ??? ??? '?? ??' ??' ??? ?????. ????3. ?? ?? ?? ???? ??? ????? ?? ???? ?? ??? ??? ??? ??? ?? ???? ????? ????? ?????. ? ?? ?? ??? ????? ? ??? ??? ??? ???? ???. ????Laravel? Gate ?? ???? ?? ???? ?? ??? ???? ?? ??? ??? ? ????. ?? ??, Article
??? "?? ??? ?? ??" ? "? ?? ??"??? ? ?? ??? ??? ?????. ArticlePolicy
????? ?? ???? ???? ? ??? ??? ??? ? ????. ??rrreee?? ?? ?? ?????? $this->authorize()
? ?????. ?? ??? ???? ??? ??? ????. ??rrreee???? ?? ??? ???? ??? ???? ???? ??? ???? ??? ? ????. ??????: ???? ???? ?? ??? ???? ???? ?????. ?? ??? ?? Laravel ?????? ??? ? ?? ?? ??? ?? ??? ?????. ? ????? Laravel? Gates ? ??? ??? ????? ???? ??? ??? ???? ?? ?? ??? ?????. 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)

Laravel?? ?? ?? ??? ??? ???? ?? ??: ?? ????? ???????? ??? ??? ?? ???? ?? ?????. ?? ??? ???? ?? ???? ??? ?? ??? ?? ??? ???? ???? ? ?? ????. Laravel? ?? ????? ????? ?? ??? ??? ???? ?? ?? ?? PHP ????????. ? ???? Laravel?? ?? ?? ??? ??? ???? ??? ???? ???? ?? ??? ?????. 1??: ?? ??? ?? ??

Laravel ?? ??? ?? ??: ??? ?? ?? ?? ??? ????? ?? ?? ??? ?????. ??: ? ??????? ??? ???? ??? ?? ??? ??? ?? ?? ??? ?????. ?? ???? PHP ?????? Laravel? ???? ??? ?? ?? ??? ?????. ? ???? Laravel? ???? ??? ?? ?? ?? ??? ???? ??? ???? ???? ?? ??? ?????. 1. ??? ?? ?? ?? ??? ??? ?? ???????? ??? ??? ????? ??? ???? ???.

Laravel? ? ??????? ??? ???? ?? ??? ??? ?? ????????. ?? ??? ? ? ?????. ? ????? Laravel ?? ???? ? ?? ?? ??? ?? ??? ?? ?? ??? ?? ???? ?? ??? ??? ??? ????. ?? ?? ?? ??? ? ???? ?? ??? ??? ???? ?? ?????. ?? ???? ??? ??? ??? ?? ?? ??? ?? ???? ??? ???? ???. ?? ??, ????? ??

Laravel ?? ??? ?? ???? ?: ?? ??? ? ?? ???? ?? ?? ??: Laravel? ????? ??? ??? ??? ???? ? ??? ? ?? ??? ?? ?? ??? ???? ?? ???? PHP ?? ????????. ??? ?????? ?? ??? ?? ??? ? ???? ??? ???? ????? ?????? ??? ??? ?????. ? ???? Laravel? ?? ?? ??? ???? ??? ???? ????? ?????? ??? ?????. 1. ???? ??? ? ?? ??

Laravel? ?? ??? ?? ?? ??: ?? ?? ? ??? ???? ?? ??: ?? ??? ? ??????? ??? ? ?? ??? ?????. Laravel ?????? ?? ??? ???? ?? ?? ??? ??? ??? ?????. ??? ?? ?? ???? ?? ??? ?? ??? ???? ??? ???? ??? ???? ???? ???? ?? ???? ???? ???. ? ????? ?? ??? Laravel? ???? ??? ??? ???? ??? ?????. ??? ??

Laravel ?? ??? ??? ??: ?? ?? ? ?? ??? ????? ?? ?? ??? ?????. ??: ? ??????? ??? ???? ?? ???? ?? ??? ?? ? ???????. ?? ???? PHP ?????? Laravel? ??? ?? ?? ??? ?????. ??? ?? ???? ????? ??? ???? ??? ??? ?????? ????? ???? ??? ?? ????. ??? ?? ?? ? ?? ??? ???? ?? ??? ???? ???? ??? ?????. ?? ???? Larave ???? ???????.

Laravel ?? ??? ?? ??: ??? ?? ??? ????? ?? ?? ??? ?????. ??: ????? ???? ???? ?? ?? ??? ? ???????? ??? ??? ???. ?? ???? PHP ?????? Laravel? ???? ??? ?? ??? ?????. ?? ?? ? ?? ?? ??? Laravel? ??? ?? ??? ????? ???, ??, ??? ? ??? ???? ???? ?? ??? ?????. ? ????? ?? ??? ?????.

Laravel? ?? ??? ?? ?? ??: ?? ????? ? ??????? ???? ??, ???? ?? ??? ?????. ????? ?? ???? ????? ???? ?? ?? ??? ??? ??? ?????. Laravel ??????? Laravel ?? ??? ?? ???? ??? ?? ?? ??? ?????. ??? ?????? ?? ????? ? ??????? ?? ???? ?? ???? ??? ???? ???? ?? ??? ? ?? ?? ??? ?????. ? ????? ?? ?? ??? ???? ?? ??? ???? ??? ?????.
