欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2018年09月16日 16:18:13   作者:深 呼吸  
這篇文章主要給大家介紹了關(guān)于Laravel用戶授權(quán)系統(tǒng)使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

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

首先兩個概念分清楚:

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

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

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

基本用法

示例

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

第一個參數(shù) $ability,表示具備什么權(quán)限。第二個參數(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)用戶授權(quán)

Gates

編寫 Gates

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

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

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

授權(quán)動作

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

第一個參數(shù)是權(quán)限的名稱,第二個參數(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 屬性,可以將模型和策略對應(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) 的第一個參數(shù)就對應(yīng)同名的策略方法,第二個參數(shù) $post 代表它是一個 Post 模型,框架會根據(jù)參數(shù)判斷采用 Post::class => PostPolicy::class 這個策略。

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

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

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

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

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

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

官方文檔

Laravel 5.5 文檔

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

總結(jié)

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

相關(guān)文章

  • 微信獲取用戶地理位置信息的原理與步驟

    微信獲取用戶地理位置信息的原理與步驟

    這篇文章主要介紹了微信獲取用戶地理位置信息的原理與步驟的相關(guān)資料,需要的朋友可以參考下
    2015-11-11
  • 微信公眾號開發(fā)之語音消息識別php代碼

    微信公眾號開發(fā)之語音消息識別php代碼

    這篇文章主要為大家詳細介紹了微信公眾號開發(fā)之語音消息識別php代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • PHP實現(xiàn)驗證碼校驗功能

    PHP實現(xiàn)驗證碼校驗功能

    這篇文章主要為大家詳細介紹了PHP實現(xiàn)驗證碼校驗功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 圖文詳解如何在WordPress中嵌入iFrame

    圖文詳解如何在WordPress中嵌入iFrame

    在 WordPress 中可以使用不同的頁面模板創(chuàng)建頁面,下面這篇文章主要給大家介紹了關(guān)于如何在WordPress中嵌入iFrame的相關(guān)資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • yii2分頁之實現(xiàn)跳轉(zhuǎn)到具體某頁的實例代碼

    yii2分頁之實現(xiàn)跳轉(zhuǎn)到具體某頁的實例代碼

    這篇文章主要介紹了yii2分頁之實現(xiàn)跳轉(zhuǎn)到具體某頁的實例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-06-06
  • thinkPHP框架自動填充原理與用法分析

    thinkPHP框架自動填充原理與用法分析

    這篇文章主要介紹了thinkPHP框架自動填充,結(jié)合實例形式較為詳細的分析了thinkPHP框架自動填充的原理、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2018-04-04
  • ThinkPHP5框架實現(xiàn)簡單的批量查詢功能示例

    ThinkPHP5框架實現(xiàn)簡單的批量查詢功能示例

    這篇文章主要介紹了ThinkPHP5框架實現(xiàn)簡單的批量查詢功能,結(jié)合實例形式分析了thinkPHP5框架使用原生SQL語句查詢、批量查詢、快速查詢、聚合查詢等操作實現(xiàn)技巧,需要的朋友可以參考下
    2018-06-06
  • Laravel 集成微信用戶登錄和綁定的實現(xiàn)

    Laravel 集成微信用戶登錄和綁定的實現(xiàn)

    這篇文章主要介紹了Laravel 集成微信用戶登錄和綁定的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Zend Framework創(chuàng)建自己的動作助手詳解

    Zend Framework創(chuàng)建自己的動作助手詳解

    這篇文章主要介紹了Zend Framework創(chuàng)建自己的動作助手實現(xiàn)方法,結(jié)合實例形式分析了基于助手的抽象基類Zend_Controller_Action_Helper_Abstract實現(xiàn)自定義動作助手的相關(guān)技巧,需要的朋友可以參考下
    2016-03-03
  • 詳解 PHP加密解密字符串函數(shù)附源碼下載

    詳解 PHP加密解密字符串函數(shù)附源碼下載

    項目中有時我們需要使用PHP將特定的信息進行加密,也就是通過加密算法生成一個加密字符串,這個加密后的字符串可以通過解密算法進行解密,便于程序?qū)饷芎蟮男畔⑦M行處理
    2015-12-12

最新評論