中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

laravel中guard指的是什么

發布時間:2022-06-06 10:44:06 來源:億速云 閱讀:167 作者:iii 欄目:編程語言

今天小編給大家分享一下laravel中guard指的是什么的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

在laravel中,guard是一個用于用戶認證的插件;guard的作用就是處理認證判斷每一個請求,從數據庫中讀取數據和用戶輸入的對比,調用是否登錄過或者允許通過的,并且Guard能非常靈活的構建一套自己的認證體系。

本文操作環境:Windows10系統、Laravel5.4版、Dell G3電腦。

laravel中guard

其實無論是Guard還是Provide,你都可以理解為。某個特定功能的插件。

他的作用是處理一個認證,來判斷每個請求、調用是否是登錄過,或者允許通過的,

什么是Guard

在Laravel/Lumen框架中,用戶的登錄/注冊的認證基本都已經封裝好了,開箱即用。而登錄/注冊認證的核心就是:

用戶的注冊信息存入數據庫(登記)

從數據庫中讀取數據和用戶輸入的對比(認證)

上述兩步是登錄/注冊的基本,可以看到都會涉及到數據庫的操作,這兩步框架底層已經幫我們做好了,而且考慮到了很多情況,比如用戶認證的數據表不是user表而是admin_user,認證字段是phone而不是email,等等一些問題都是Guard所要解決的,通過Guard可以指定使用哪個數據表什么字段等,Guard能非常靈活的構建一套自己的認證體系。

通俗地講,就是這樣:Guard就像是小區的門衛大叔,冷酷無情,不認人只認登記信息。

進小區之前大叔需要先檢查你的身份,驗證不通過大叔就不讓你進去。

如果是走路/騎車進去,大叔1需要檢查你的門禁卡,他拿出記錄了小區所有業主門禁卡信息的本子查看你這個門禁卡信息有沒有在這個本子上;

如果你開車進去,大叔2就從記錄了所有業主車牌號的本子中檢查你的車牌號,所以新業主要小區了需要告知門衛大叔們你的門禁卡信息或者車牌號,要不然大叔2不讓你進。

如果是物業管理員要進小區,門衛大叔3也只認登記信息,管理員出示他的管理員門禁卡,門衛大叔就會檢查記錄了管理員門禁卡信息的本子。

上面講的對應了框架中的多用戶認證:

走路/騎車的人 -> 門禁卡

開車的人 -> 車牌號

物業管理員 -> 門禁卡

門禁卡和車牌號都是不同的認證方式,而門衛大叔查看的本子就對應了不同數據庫中的用戶信息,這樣講是不是更容易理解了。

Lumen/Laravel中以中間件(Middleware)的方式提供了非常靈活的認證,通過簡單的配置就可以切換多個認證。

一個Guard會涉及到三個部分,分別是:

  • Guard實現本身

  • User Provider用戶提供者,指定哪個數據表以什么方式獲取(eloquent/database)

  • Authenticatable接口規定那些東西可以被認證,就是實現它的接口嘛

擴展知識:

Guard我的理解他應該是一個類似用戶認證的東西。

在 config/auth.php 中有配置 guards 的參數,可以看出來 web 和 api 是兩個 guards。

在平時的業務中api可能更多的是用戶前臺用戶的操作,而web更多的是后臺用戶的操作。

默認配置都是指向 users 的 provider。

/*
    | Authentication Guards
    |認證關卡
    | Next, you may define every authentication guard for your application. Of course, a great default configuration has been defined for you here which uses session storage and the Eloquent user provider.
    |接下來,你可能要為你的應用定義每個認證關卡。當然,已經為你定一了一個很不錯的默認配置。這里會使用會話儲存和用戶模型
    | All authentication drivers have a user provider. This defines how the users are actually retrieved out of your database or other storage mechanisms used by this application to persist your user's data.
    |所有的認證驅動都有一個用戶提供者。這里定義了怎么實際上怎么從你的數據庫或者其他儲存機制中取出用戶。以便應用開保持你的用戶數據
    | Supported: "session", "token"
    |可選驅動:"session", "token"
    */
'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],
        'api' => [
            'driver' => 'token',
            'provider' => 'users',
        ],
    ],

接下來看看 provider 都有什么配置。

  /*
    | User Providers
    |用戶提供者
    | If you have multiple user tables or models you may configure multiple sources which represent each model / table. These sources may then be assigned to any extra authentication guards you have defined.
    | 如果你有多個用戶表或用戶模型,你可以配置多個代表用戶表或模型的資源。這些資源可能被分配給應用中你定義的其他認證關卡
    | Supported: "database", "eloquent"
    |
    */
 'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],
        // 'users' => [
        //     'driver' => 'database',
        //     'table' => 'users',
        // ],
    ],

在 providers 中有剛才看到的 users 配置了吧,這個就是配置laravel的用戶組,因為前臺和后臺用戶在一般的情況下是分開操作的。所以就可以在這里新建一個 admin 的用戶組,并配置。開箱默認只用 users。

相對的每個用戶組密碼操作應該也是不同的,所以這里還有 password 的配置。

  /*
    | Resetting Passwords
    | 密碼重置
    | You may specify multiple password reset configurations if you have more than one user table or model in the application and you want to have separate password reset settings based on the specific user types.
    | 如果你有多個用戶模型或表,并且想對不同用戶類型有特定的密碼重置,則可以配置多個特定的重置密碼
    | The expire time is the number of minutes that the reset token should be considered valid. This security feature keeps tokens short-lived so they have less time to be guessed. You may change this as needed.
    |這個獲取時間是令牌過期的分鐘數,這個安全措施可以保證令牌保持段時間有效,因此有更少的時間被破解。你可以按照需要更改。
    */
    'passwords' => [
        'users' => [
            'provider' => 'users',
            'table' => 'password_resets',
            'expire' => 60,
        ],
    ],

平時用于檢測登陸用戶,或者用戶是否登陸我們都用的是 Auth::check() 就可以檢測到,這是因為在使用默認配置的時候,guard自動配置為 users 用戶組。

  /*
    | Authentication Defaults
    | 默認認證配置
    | This option controls the default authentication "guard" and password reset options for your application. You may change these defaults as required, but they're a perfect start for most applications.
    | 這個就是應用的默認認證關卡個重置密碼,你可以按自己要求更改。但這是最適合一個新應用的配置
    */
    'defaults' => [
        'guard' => 'web',
        'passwords' => 'users',
    ],

web guard下指向的就是 users 模型。

但是當如果我們有兩個用戶組,前臺后臺的時候怎么進行驗證呢?

Auth::check() 是判斷用戶是否登錄的方法,如果使用的默認用戶系統,那這樣使用沒問題。

但是使用兩組用戶的話,就應該這樣操作:

Auth::guard('api')->check() 就是用來判斷前臺用戶是否登錄 Auth::guard('web')->check() 就是用來判斷后臺用戶是否登錄

所以如果使用非默認用戶組,則需要用guard來指定。

所以我們平時用的其實就是默認配置,寫全就應該是 Auth::guard(‘web)->check()

以上就是“laravel中guard指的是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安顺市| 贡山| 平邑县| 安阳市| 五寨县| 临猗县| 左云县| 宜城市| 集贤县| 龙门县| 新晃| 垦利县| 富川| 黑河市| 汨罗市| 台中市| 梅河口市| 九龙坡区| 广河县| 囊谦县| 习水县| 青海省| 太保市| 区。| 南丹县| 义乌市| 永兴县| 辉县市| 宁化县| 永清县| 九龙坡区| 济宁市| 万荣县| 武城县| 陵川县| 屏山县| 常山县| 新田县| 正镶白旗| 安龙县| 桓仁|