校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Laravel用戶授權系統的使用方法示例

Laravel用戶授權系統的使用方法示例

熱門標簽:合肥企業外呼系統線路 電信外呼系統多少錢一個月 宿州正規外呼系統軟件 企業400電話辦理多少費用 桂陽公司如何做地圖標注 代理打電話機器人 萍鄉商鋪地圖標注 神龍斗士電話機器人 太原400電話申請流程

前言

本文主要給大家介紹的是關于Laravel用戶授權系統使用的相關內容

首先兩個概念分清楚:

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

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

下面話不多說了,來一起看看詳細的介紹吧

基本用法

示例

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

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

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

$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);
}

有兩種方式實現用戶授權

Gates

編寫 Gates

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

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

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

授權動作

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

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

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) 的第一個參數就對應同名的策略方法,第二個參數 $post 代表它是一個 Post 模型,框架會根據參數判斷采用 Post::class => PostPolicy::class 這個策略。

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

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

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

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

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

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

官方文檔

Laravel 5.5 文檔

https://laravel-china.org/docs/laravel/5.5/authorization/1310

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • Laravel實現用戶注冊和登錄
  • Laravel 5框架學習之用戶認證
  • Laravel重寫用戶登錄簡單示例
  • Laravel框架用戶登陸身份驗證實現方法詳解
  • Laravel實現用戶多字段認證的解決方法
  • Laravel5.5 實現后臺管理登錄的方法(自定義用戶表登錄)
  • 解決laravel5中auth用戶登錄其他頁面獲取不到登錄信息的問題
  • laravel-admin 管理平臺獲取當前登陸用戶信息的例子
  • Laravel多用戶認證系統示例詳解
  • Laravel6.2中用于用戶登錄的新密碼確認流程詳解
  • Laravel 微信小程序后端實現用戶登錄的示例代碼
  • laravel利用中間件防止未登錄用戶直接訪問后臺的方法
  • Laravel 框架基于自帶的用戶系統實現登錄注冊及錯誤處理功能分析

標簽:白銀 鄂州 崇左 廊坊 辛集 衡陽 太原 綏化

巨人網絡通訊聲明:本文標題《Laravel用戶授權系統的使用方法示例》,本文關鍵詞  Laravel,用戶,授權,系統,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Laravel用戶授權系統的使用方法示例》相關的同類信息!
  • 本頁收集關于Laravel用戶授權系統的使用方法示例的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 南丰县| 浦北县| 阿拉尔市| 舟曲县| 洞口县| 新余市| 南宁市| 塔城市| 方山县| 凯里市| 砀山县| 万山特区| 民丰县| 唐山市| 曲沃县| 彩票| 鹰潭市| 离岛区| 武冈市| 莒南县| 寿宁县| 天津市| 汝城县| 驻马店市| 托克托县| 莱芜市| 乌兰浩特市| 印江| 双流县| 新乡市| 绥芬河市| 江华| 宝坻区| 新竹市| 荆州市| 饶阳县| 石家庄市| 黄浦区| 江阴市| 泰来县| 富裕县|