W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
Illuminate\Contracts\Auth\UserProvider
實現(xiàn)僅負責從 MySQL、Riak 等持久化存儲系統(tǒng)中提取 Illuminate\Contracts\Auth\Authenticatable
實現(xiàn)。無論用戶如何存儲及用于表示它的類是什么類型,這兩個接口都允許 Laravel 身份驗證機制繼續(xù)運行:
我們來看看 Illuminate\Contracts\Auth\UserProvider
契約:
<?php
namespace Illuminate\Contracts\Auth;
interface UserProvider
{
public function retrieveById($identifier);
public function retrieveByToken($identifier, $token);
public function updateRememberToken(Authenticatable $user, $token);
public function retrieveByCredentials(array $credentials);
public function validateCredentials(Authenticatable $user, array $credentials);
}
retrieveById
函數(shù)通常接受用于表示類的 key ,如 MySQL 數(shù)據(jù)庫中自動遞增的 ID 作為參數(shù),并獲取和返回與這個 ID 匹配的 Authenticatable
實現(xiàn)。
retrieveByToken
函數(shù)通過用戶的唯一 $identifier
和存儲在 remember_token
列的 「記住我」 令牌獲取用戶。與前一方法相同,它返回 Authenticatable
實現(xiàn)。
updateRememberToken
方法用新 $token
更新 $user
的 remember_token
列。在「記住我」登錄校驗成功或者用戶登出時分配「刷新令牌」。
在嘗試登錄到應用時,retrieveByCredentials
方法接受憑證數(shù)組傳遞給 Auth::attempt
方法。此方法在底層持久化存儲中「查詢」與這些憑證匹配的用戶。通常,此方法運行一個基于 $credentials['username']
的 「where」 條件,它應該返回一個 Authenticatable
實現(xiàn)。此方法不就嘗試進行任何密碼校驗或身份驗證。
validateCredentials
方法應該比較給定的 $user
與 $credentials
來驗證用戶身份。例如,此方法或許應該使用 Hash::check
來比較 $user->getAuthPassword()
的值與 $credentials['password']
的值。它應該返回 true
或 false
,以表明用戶密碼是否有效。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: