Laravel Guard

Laravel Guard

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

config/auth.php 中有配置 guards 的參數,可以看出來 webapi 是兩個 guards
在平時的業務中api可能更多的是用戶前臺用戶的操作,而web更多的是後臺用戶的操作。
默認配置都是指向 usersprovider

 

/*
    | 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()



作者:禹聲
鏈接:https://www.jianshu.com/p/c6bde998b87b
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章