欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

扣丁學堂PHP培訓簡述Laravel用戶授權系統(tǒng)的使用方法

2019-09-23 10:08:03 5086瀏覽

關于Laravel用戶授權系統(tǒng)不知道小伙伴們了解多少?不了解Laravel用戶授權系統(tǒng)的小伙伴也沒有關系,本篇文章扣丁學堂PHP培訓小編給大家簡單分享一下關于Laravel用戶授權系統(tǒng)使用的相關資料,文中通過代碼和示例給大家做了詳細的介紹,對大家的學習或者工作具有一定的參考學習價值,感興趣的小伙伴就來了解一下吧。


扣丁學堂PHP培訓簡述Laravel用戶授權系統(tǒng)的使用方法


了解Laravel用戶授權系統(tǒng)使用的相關內(nèi)容之前,首先兩個概念分清楚:


用戶身份認證Authentication-處理用戶登錄, 退出, 注冊, 找回密碼, 重置密碼, 用戶郵箱認證etc..


權限管理Authorization-負責 用戶 與 權限, 用戶組 三者之間的對應, 以及管理。


下面來一起看看詳細的介紹吧:


基本用法


示例


$this->authorize('update', $post);


第一個參數(shù) $ability,表示具備什么權限。第二個參數(shù) $post,是一個模型實例。

不需指定模型的動作,比如 create,不需要指定的模型。第二個參數(shù)傳一個類名。如:


$this->authorize('create', Post::class);


使用的場景有:控制器輔助方法,中間件,Blade模板,User 模型的 can 和 can't 方法。


authorize方法:


public function authorize($ability, $arguments = [])
{
 list($ability, $arguments) = $this->parseAbilityAndArguments($ability, $arguments);
 
 return app(Gate::class)->authorize($ability, $arguments);
}


有兩種方式實現(xiàn)用戶授權.


Gates


編寫 Gates


一般在 app\Providers\AuthServiceProvider 的 boot 方法中定義。


Gate::define('update-post', function ($user, $post) {
 return $user->id == $post->user_id;
});


第一個參數(shù)是權限的名稱,第二個參數(shù)是滿足權限的條件,可以是閉包,控制器方法。


授權動作


allows 和 denies 兩種方法,表示允許和否定。


第一個參數(shù)是權限的名稱,第二個參數(shù)是模型,可以為空。這里不需要傳入用戶,框架會自動處理。


if (Gate::allows('update-post', $post)) {
 // 指定用戶可以更新博客...
}
 
if (Gate::denies('update-post', $post)) {
 // 指定用戶不能更新博客...
}


如果需要指定特定用戶,可以使用 Gate Facade 中的 forUser 方法:


if (Gate::forUser($user)->allows('update-post', $post)) {
 // 指定用戶可以更新博客...
}
 
if (Gate::forUser($user)->denies('update-post', $post)) {
 // 指定用戶不能更新博客...
}


策略


生成策略


artisan 命令:


php artisan make:policy PostPolicy


也可以指定 model,生成包含 CURD 的策略方法。


注冊策略


在 AuthServiceProvider 的 policies 屬性,可以將模型和策略對應起來。如:


protected $policies = [
 Post::class => PostPolicy::class,
];


策略方法


public function update(User $user, Post $post)
{
 return $user->id === $post->user_id;
}


策略方法,就是權限名稱,$this->authorize(‘update', $post) 的第一個參數(shù)就對應同名的策略方法,第二個參數(shù) $post 代表它是一個 Post 模型,框架會根據(jù)參數(shù)判斷采用 Post::class => PostPolicy::class 這個策略。


當 authorize 方法調用的時候,實際上會自動注入 User 和 Post 類型的兩個參數(shù),也因此使用授權系統(tǒng)必須是用戶登錄的情況下。


使用策略也不一定要和模型綁定,比如這樣也可以:


protected $policies = [
 Travel::class => TravelPolicy::class,
 'aaa'=>TravelPolicy::class,
];


這個 aaa 字符串對應策略類為 TravelPolicy::class,在控制器使用 authorize 判斷授權:


$this->authorize('update','aaa');


此時也是可行的,第二個參數(shù)這個時候就必須是字符串 aaa 了,然后 authorize 方法只會自動注入 User 參數(shù)。


想要了解更多關于PHP開發(fā)方面內(nèi)容的小伙伴,請關注扣丁學堂PHP培訓官網(wǎng)、微信等平臺,扣丁學堂IT職業(yè)在線學習教育有專業(yè)的PHP講師為您指導,此外扣丁學堂老師精心推出的PHP視頻教程定能讓你快速掌握PHP從入門到精通開發(fā)實戰(zhàn)技能。扣丁學堂PHP技術交流群:374332265。


                          JavaEE/微服務/源碼解析/分布式/企業(yè)級架構【VIP體驗課】


     【關注微信公眾號獲取更多學習資料】        【掃碼進入JavaEE/微服務VIP免費公開課】  



查看更多關于“php培訓資訊”的相關文章>>

標簽: PHP培訓 PHP視頻教程 PHP在線視頻 PHP學習視頻 Laravel框架

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國免費咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權所有   北京市海淀區(qū)寶盛北里西區(qū)28號中關村智誠科創(chuàng)大廈4層
京ICP備2021002079號-2   Copyright ? 2017 - 2022
返回頂部 返回頂部