鍍金池/ 教程/ PHP/ 哈希
門面
Laravel Homestead
安裝及配置
測試
HTTP 中間件
加密
升級指南
幫助函數(shù)
應(yīng)用目錄結(jié)構(gòu)
集合
新手入門指南-簡單任務(wù)管理系統(tǒng)
任務(wù)調(diào)度
查詢構(gòu)建器
視圖
驗證
Laravel Cashier(訂購&支付&發(fā)票)
本地化
隊列
調(diào)整器
分頁
文件系統(tǒng)/云存儲
貢獻代碼
哈希
HTTP 控制器
緩存
遷移
HTTP 請求
Laravel Elixir
發(fā)行版本說明
Envoy 任務(wù)運行器(SSH任務(wù))
序列化
Session
起步
帶用戶功能的任務(wù)管理系統(tǒng)
起步
用戶授權(quán)
郵件
事件
填充數(shù)據(jù)
HTTP 路由
服務(wù)提供者
Blade 模板引擎
包開發(fā)
用戶認(rèn)證
Artisan 控制臺
HTTP 響應(yīng)
集合
服務(wù)容器
關(guān)聯(lián)關(guān)系
一次請求的生命周期
契約
Redis
錯誤&日志

哈希

1、簡介

Laravel Hash 門面為存儲用戶密碼提供了安全的 Bcrypt哈希算法。如果你正在使用 Laravel應(yīng)用自帶的 AuthController控制器,將會自動為注冊和認(rèn)證使用該 Bcrypt。

Bcrypt 是散列密碼的絕佳選擇,因為其”工作因子“是可調(diào)整的,這意味著隨著硬件功能的提升,生成哈希所花費的時間也會增加。

2、基本使用

可以調(diào)用 Hash門面上的 make方法散列存儲密碼:

<?php

namespace App\Http\Controllers;

use Hash;
use App\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class UserController extends Controller{
    /**
     * 更新用戶密碼
     *
     * @param  Request  $request
     * @param  int  $id
     * @return Response
     */
    public function updatePassword(Request $request, $id)
    {
        $user = User::findOrFail($id);

        // 驗證新密碼長度...

        $user->fill([
            'password' => Hash::make($request->newPassword)
        ])->save();
    }
}

此外,還可以使用全局的幫助函數(shù) bcrypt

bcrypt('plain-text');

2.1 驗證哈希密碼

check方法允許你驗證給定原生字符串和給定哈希是否相等,然而,如果你在使用 Laravel自帶的 AuthController(詳見用戶認(rèn)證一節(jié)),就不需要再直接使用該方法,因為自帶的認(rèn)證控制器自動調(diào)用了該方法:

if (Hash::check('plain-text', $hashedPassword)) {
    // 密碼匹配...
}

2.2 檢查密碼是否需要被重新哈希

needsRehash 方法允許你判斷哈希計算器使用的工作因子在上次密碼被哈希后是否發(fā)生改變:

if (Hash::needsRehash($hashed)) {
    $hashed = Hash::make('plain-text');
}
上一篇:Redis下一篇:填充數(shù)據(jù)