主頁(yè) > 知識(shí)庫(kù) > Laravel用戶授權(quán)系統(tǒng)的使用方法示例

Laravel用戶授權(quán)系統(tǒng)的使用方法示例

熱門標(biāo)簽:合肥企業(yè)外呼系統(tǒng)線路 電信外呼系統(tǒng)多少錢一個(gè)月 宿州正規(guī)外呼系統(tǒng)軟件 企業(yè)400電話辦理多少費(fèi)用 桂陽公司如何做地圖標(biāo)注 代理打電話機(jī)器人 萍鄉(xiāng)商鋪地圖標(biāo)注 神龍斗士電話機(jī)器人 太原400電話申請(qǐng)流程

前言

本文主要給大家介紹的是關(guān)于Laravel用戶授權(quán)系統(tǒng)使用的相關(guān)內(nèi)容

首先兩個(gè)概念分清楚:

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

權(quán)限管理 Authorization - 負(fù)責(zé) 用戶 與 權(quán)限, 用戶組 三者之間的對(duì)應(yīng), 以及管理.

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

基本用法

示例

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

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

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

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

使用的場(chǎng)景有:控制器輔助方法,中間件,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);
}

有兩種方式實(shí)現(xiàn)用戶授權(quán)

Gates

編寫 Gates

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

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

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

授權(quán)動(dòng)作

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

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

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 的策略方法。

注冊(cè)策略

在 AuthServiceProvider 的 policies 屬性,可以將模型和策略對(duì)應(yīng)起來。如:

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

策略方法

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

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

當(dāng) authorize 方法調(diào)用的時(shí)候,實(shí)際上會(huì)自動(dòng)注入 User 和 Post 類型的兩個(gè)參數(shù),也因此使用授權(quán)系統(tǒng)必須是用戶登錄的情況下。

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

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

這個(gè) aaa 字符串對(duì)應(yīng)策略類為 TravelPolicy::class,在控制器使用 authorize 判斷授權(quán):

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

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

官方文檔

Laravel 5.5 文檔

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

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

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

標(biāo)簽:白銀 鄂州 崇左 廊坊 辛集 衡陽 太原 綏化

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Laravel用戶授權(quán)系統(tǒng)的使用方法示例》,本文關(guān)鍵詞  Laravel,用戶,授權(quán),系統(tǒng),的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Laravel用戶授權(quán)系統(tǒng)的使用方法示例》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Laravel用戶授權(quán)系統(tǒng)的使用方法示例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章