Laravel 文件閱讀:雜湊

zhangbao發表於2017-09-30

翻譯、衍生自:https://learnku.com/docs/laravel/5.5/hashing

簡介

Laravel 的 Hash 門面為儲存使用者密碼提供了安全的 Bcrypt 雜湊。如果你是使用內建的 LoginControllerRegisterController 類來構建認證系統的,那麼你的使用者密碼在註冊和認證過程中已經自動使用了 Bcrypt。

提示。Bcrypt 是雜湊密碼的理想選擇,因為它的「影響因子」是可調整的,這就是說生成雜湊的時間可以隨著硬體功率的增加而增加。

基本用法

你可以透過呼叫 Hash 門面的 make 方法來雜湊一個明文密碼。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use App\Http\Controllers\Controller;

class UpdatePasswordController extends Controller
{
    /**
     * Update the password for the user.
     *
     * @param  Request  $request
     * @return Response
     */
    public function update(Request $request)
    {
        // Validate the new password length...

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

make 方法允許你使用 rounds 選項來管理 bcrypt 雜湊演算法的影響因子;然而,使用 make 方法的預設值,已經夠夠的了。

$hashed = Hash::make('password', [
    'rounds' => 12
]);

比對雜湊值和文字字串

check 方法用來驗證給定的純文字字串是否能對應到給定的一個雜湊值。如果你使用的是 Laravel 內建的 LoginController 了,你已經在用它了。

if (Hash::check('plain-text', $hashedPassword)) {
    // The passwords match...   
}

檢查密碼是否需要重新雜湊

needsRehash 方法用來確定由於密碼雜湊後,雜湊值使用的工作因子是否已更改:

if (Hash::needsRehash($hashed)) {
    $hashed = Hash::make('plain-text');
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章