哈希
簡介
Laravel 的 Hash 假面對存儲用戶的密碼提供了安全的 Bcrypt 加密工具哈?;?。如果你使用了 laravel 自帶的 AuthController 控制器,那么你就已經(jīng)使用過了它。它會在注冊和認(rèn)證時自動的使用 Bcrypt 加密工具。
Bcrypt 對于密碼哈?;且环N很好的選擇,因為它的‘工作因子’是可以調(diào)整的,這就意味著隨著硬件功率的提升,生成哈希密碼的時間也會提升。
基礎(chǔ)用法
你可以使用 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
{
/**
* 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 密碼的驗證
check 方法允許你驗證所給定的哈希化的密碼是否與所給定的原始字符串相匹配。如果你使用了 laravel 所提供的 AuthController 控制器,那么你并不需要直接的去使用這個方法,因為在認(rèn)證控制器中系統(tǒng)會自動的調(diào)用這個方法:
if (Hash::check('plain-text', $hashedPassword)) {
// The passwords match...
}
檢查密碼是否需要刷新
needsRehash 方法可以用來判斷密碼是否需要重新生成,當(dāng)工作因子變更時而密碼沒有使用新的工作因子生成時,其將返回 true:
if (Hash::needsRehash($hashed)) {
$hashed = Hash::make('plain-text');
}