Laravel?`Hash使用該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
(詳見用戶認證一節(jié)),就不需要再直接使用該方法,因為自帶的認證控制器自動調(diào)用了該方法:
if (Hash::check('plain-text', $hashedPassword)) {
// 密碼匹配...
}
needsRehash
方法允許你判斷哈希計算器使用的工作因子在上次密碼被哈希后是否發(fā)生改變:
if (Hash::needsRehash($hashed)) {
$hashed = Hash::make('plain-text');
}
更多建議: