Laravel Auth深入探究

今天在寫Laravel登錄的時候墙杯,根據(jù)需求也不想用laravel自帶的auth登錄認證蛾坯,便在搜索了一番仲墨,開始了auth的深入探究之旅。

剛開始根據(jù)官方文檔揍障,用戶認證 里的手動認證用戶描述宗收,實現(xiàn)了我的簡單登錄邏輯代碼,如下:

public function login(Request $request)
{
    if (Auth::attempt(['name' => $request->name, 'password' => $request->password])) {
        //認證通過
        $rt = array('status' => 200, 'msg' => '登陸成功', 'data' => array('isLogin' => true));
    } else {
        $rt = array('status' => 400, 'msg' => '登陸失敗', 'data' => array('isLogin' => false));
    }

    return response()->json($rt);
}

然后順著laravel Auth的邏輯亚兄,找到在 Illuminate\Auth\Guard.php 中的 attempt 方法混稽,如下圖:

auth-1.png

根據(jù)代碼的實現(xiàn),最關鍵的點應該是以下兩句代碼:

$this->lastAttempted = $user = $this->provider->retrieveByCredentials($credentials);

$this->hasValidCredentials($user, $credentials)

我們一句一句來审胚,順著 retrieveByCredentials 方法匈勋,這里要說明的是,因為在 config/auth.php 中我選擇的是 eloquent 認證驅(qū)動膳叨,所以找到 Illuminate\AuthEloquentUserProvider 下的 retrieveByCredentials方法洽洁,如下圖:

auth-2.png

retrieveByCredentials 方法實現(xiàn)了根據(jù)用戶登錄輸入的信息(除密碼外),查詢到登錄用戶的信息并返回菲嘴。

然后執(zhí)行 $this->hasValidCredentials($user, $credentials), 最終定位到 Illuminate\AuthEloquentUserProvider 中的 validateCredentials方法饿自,如下圖:

auth-3.png

最終Laravel 通過 Hash facade 提供 Bcrypt 加密來驗證用戶密碼是否一致。(注意:數(shù)據(jù)庫密碼字段名為 password龄坪,若不是需在模型方法中重新指定)

看到了這里昭雌,也有了一些疑問,如果我不用hash來加密密碼呢健田,使用md5 + "鹽" 的方式烛卧,那就只有改寫這個驗證邏輯了。("鹽" 在數(shù)據(jù)庫中字段名為 salt

在 Illuminate\Contracts\Auth\Authenticatable 中加入方法:

public function getAuthSalt();

在 Illuminate\Auth\Authenticatable 加入方法:

public function getAuthSalt()
{
   return $this->salt;
}

改寫上文提到的 retrieveByCredentials 方法

public function validateCredentials(UserContract $user, array $credentials)
{
    $plain = $credentials['password'];
    $authPassword = $user->getAuthPassword();
    $authSalt = $user->getAuthSalt();
    return $authPassword === md5($plain.$authSalt);
}

到這里基本就結(jié)束了妓局,需要注意的是总放,使用Auth認證默認是 App\User.php,我根據(jù)需求更改了 config/auth.php,改成了 App\Models\User.php 因為該文件我是執(zhí)行命令 php artisan make:model Models/User 生成的好爬,便有了一點小坑的地方局雄,它沒有 use Auth 認證的類,所以此時將 app/User.php 下的復制過來即可存炮。


以下是我在學習時炬搭,找到的兩篇關于laravel auth 的文章,對我理解auth有很大的幫助


最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市僵蛛,隨后出現(xiàn)的幾起案子尚蝌,更是在濱河造成了極大的恐慌迎变,老刑警劉巖充尉,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異衣形,居然都是意外死亡驼侠,警方通過查閱死者的電腦和手機姿鸿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來倒源,“玉大人苛预,你說我怎么就攤上這事∷癜荆” “怎么了热某?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長胳螟。 經(jīng)常有香客問我昔馋,道長,這世上最難降的妖魔是什么糖耸? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任秘遏,我火速辦了婚禮,結(jié)果婚禮上嘉竟,老公的妹妹穿的比我還像新娘邦危。我一直安慰自己,他們只是感情好舍扰,可當我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布倦蚪。 她就那樣靜靜地躺著,像睡著了一般边苹。 火紅的嫁衣襯著肌膚如雪审丘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天勾给,我揣著相機與錄音滩报,去河邊找鬼。 笑死播急,一個胖子當著我的面吹牛脓钾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播桩警,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼可训,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了捶枢?” 一聲冷哼從身側(cè)響起握截,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎烂叔,沒想到半個月后谨胞,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡蒜鸡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年胯努,在試婚紗的時候發(fā)現(xiàn)自己被綠了牢裳。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡叶沛,死狀恐怖蒲讯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情灰署,我是刑警寧澤判帮,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站溉箕,受9級特大地震影響脊另,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜约巷,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一偎痛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧独郎,春花似錦踩麦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至贪婉,卻和暖如春反粥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背疲迂。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工才顿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人尤蒿。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓郑气,卻偏偏與公主長得像,于是被迫代替她去往敵國和親腰池。 傳聞我的和親對象是個殘疾皇子尾组,可洞房花燭夜當晚...
    茶點故事閱讀 43,728評論 2 351

推薦閱讀更多精彩內(nèi)容

  • 簡介 laravel 使實施認證的變得非常簡單,事實上示弓,它提供了非常全面的配置項以適應應用的業(yè)務讳侨。認證的配置文件存...
    Dearmadman閱讀 6,121評論 2 13
  • 過去做事情急,什么東西拿起來就用奏属,不喜歡進行系統(tǒng)性的學習跨跨,造成在使用過程中的錯誤和低效,現(xiàn)在感覺自己耐心多了拍皮,用之...
    馬文Marvin閱讀 1,972評論 0 10
  • 原文鏈接 必備品 文檔:Documentation API:API Reference 視頻:Laracasts ...
    layjoy閱讀 8,605評論 0 121
  • 先說幾句廢話歹叮,調(diào)和氣氛。事情的起由來自客戶需求頻繁變更铆帽,偉大的師傅決定橫刀立馬的改革使用新的框架(created ...
    wsdadan閱讀 3,048評論 0 12
  • 文|浪浪于江湖 全目錄|【我的青春在深圳】 上一章|我的青春在深圳(9) 早上7點咆耿,他們從學校出發(fā),上了火車以后爹橱,...
    青如許閱讀 563評論 2 5