前言
學習一個框架, Ray 的想法是, 在深入理解底層實作的原理之前, 應該先知道這個框架的 使用方法
; 先學習怎麼使用這個前人造的輪子, 再學習怎麼樣造一個輪子。
所以本篇文章重點在於細讀官方文件, 並將內容理解後以 Q&A 的方式記錄下來, 加速學習以及查詢。
Configuration
Laravel Hashing 中, 支援使用哪三種算法來 hash password?
- Argon2i
- Argon2id
- Bcrypt
Basic Usage
以下的 Laravel example code 的意思是?
- Example:
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
class UpdatePasswordController extends Controller
{
public function update(Request $request)
{
// Validate the new password length...
$request->user()->fill([
'password' => Hash::make($request->newPassword)
])->save();
}
} - Answer:
取得登入的 User model, 並將 password attribute 替換成 hash 過的 newPassword, 然後儲存
Adjusting The Bcrypt Work Factor
以下的 Laravel example code 的意思是?
- Example:
<?php
$hashed = Hash::make('password', [
'rounds' => 12
]); - Answer:
hash password, 並指定 iteration 次數
Adjusting The Argon2 Work Factor
以下的 Laravel example code 的意思是?
- Example:
<?php
$hashed = Hash::make('password', [
'memory' => 1024,
'time' => 2,
'threads' => 2,
]); - Answer:
指定 Hash 時, memory 用量, time 以及 thread 數量
Verifying A Password Against A Hash
以下的 Laravel example code 的意思是?
- Example:
<?php
if (Hash::check('plain-text', $hashedPassword)) {
// The passwords match...
} - Answer:
使用Hash::check
, arg1 為尚未 hash 過的, arg2 為 hashed 過的, 比較是否一致
Checking If A Password Needs To Be Rehashed
以下的 Laravel example code 的意思是?
- Example:
<?php
if (Hash::needsRehash($hashed)) {
$hashed = Hash::make('plain-text');
} - Answer:
使用Hash::needsRehash()
來確認 arg 是否與目前 Application 的 hash factor 一致, 若不一致則 return true
留言