Laravel Hash
門面為存儲用戶密碼提供了安全的 Bcrypt
哈希算法。如果你正在使用 Laravel
應(yīng)用自帶的 AuthController
控制器,將會自動為注冊和認(rèn)證使用該 Bcrypt
。
Bcrypt
是散列密碼的絕佳選擇,因為其”工作因子“是可調(diào)整的,這意味著隨著硬件功能的提升,生成哈希所花費的時間也會增加。
可以調(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');
check
方法允許你驗證給定原生字符串和給定哈希是否相等,然而,如果你在使用 Laravel
自帶的 AuthController
(詳見用戶認(rèn)證一節(jié)),就不需要再直接使用該方法,因為自帶的認(rèn)證控制器自動調(diào)用了該方法:
if (Hash::check('plain-text', $hashedPassword)) {
// 密碼匹配...
}
needsRehash 方法允許你判斷哈希計算器使用的工作因子在上次密碼被哈希后是否發(fā)生改變:
if (Hash::needsRehash($hashed)) {
$hashed = Hash::make('plain-text');
}