簡介
Laravel 的 Hash 門面為儲存使用者密碼提供了安全的 Bcrypt 雜湊。如果你是使用內建的 LoginController
和 RegisterController
類來構建認證系統的,那麼你的使用者密碼在註冊和認證過程中已經自動使用了 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 協議》,轉載必須註明作者和本文連結