哈希
簡介
Laravel 的 Hash
假面對存儲(chǔ)用戶的密碼提供了安全的 Bcrypt 加密工具哈希化肮之。如果你使用了 laravel 自帶的 AuthController
控制器掉缺,那么你就已經(jīng)使用過了它。它會(huì)在注冊和認(rèn)證時(shí)自動(dòng)的使用 Bcrypt 加密工具戈擒。
Bcrypt 對于密碼哈峡裘鳎化是一種很好的選擇,因?yàn)樗摹ぷ饕蜃印强梢哉{(diào)整的筐高,這就意味著隨著硬件功率的提升搜囱,生成哈希密碼的時(shí)間也會(huì)提升。
基礎(chǔ)用法
你可以使用 Hash
假面的 make
方法來進(jìn)行密碼的哈细掏粒化:
<?php
namespace App\Http\Controllers;
use Hash;
use App\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class UserController extends Controller
{
/**
* Update the password for the user.
*
* @param Request $request
* @param int $id
* @return Response
*/
public function updatePassword(Request $request, $id)
{
$user = User::findOrFail($id);
// validate the new password length...
$user->fill([
'password' => Hash::make($request->newPassword)
])->save();
}
}
另外蜀肘,你可以使用全局幫助方法 bcrypt
來做同樣的事情:
bcrypt('plain-text');
針對 Hash 密碼的驗(yàn)證
check
方法允許你驗(yàn)證所給定的哈希化的密碼是否與所給定的原始字符串相匹配稽屏。如果你使用了 laravel 所提供的 AuthController
控制器扮宠,那么你并不需要直接的去使用這個(gè)方法,因?yàn)樵谡J(rèn)證控制器中系統(tǒng)會(huì)自動(dòng)的調(diào)用這個(gè)方法:
if (Hash::check('plain-text', $hashedPassword)) {
// The passwords match...
}
檢查密碼是否需要刷新
needsRehash
方法可以用來判斷密碼是否需要重新生成狐榔,當(dāng)工作因子變更時(shí)而密碼沒有使用新的工作因子生成時(shí)坛增,其將返回 true
:
if (Hash::needsRehash($hashed)) {
$hashed = Hash::make('plain-text');
}