Laravel 文档阅读:哈希
简介
Laravel 的 Hash 门面为存储用户密码提供了安全的 Bcrypt 哈希。如果你是使用内置的 LoginController
和 RegisterController
类来构建认证系统的,那么你的用户密码在注册和认证过程中已经自动使用了 Bcrypt。
提示。Bcrypt 是哈希密码的理想选择,因为它的「影响因子」是可调整的,这就是说生成哈希的时间可以随着硬件功率的增加而增加。
基本用法
你可以通过调用 Hash
门面的 make
方法来哈希一个明文密码。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use App\Http\Controllers\Controller;
class UpdatePasswordController extends Controller
{
/**
* Update the password for the user.
*
* @param Request $request
* @return Response
*/
public function update(Request $request)
{
// Validate the new password length...
$request->user()->fill([
'password' => Hash::make($request->newPassword)
])->save();
}
}
make
方法允许你使用 rounds
选项来管理 bcrypt 哈希算法的影响因子;然而,使用 make
方法的默认值,已经够够的了。
$hashed = Hash::make('password', [
'rounds' => 12
]);
比对哈希值和文本字符串
check
方法用来验证给定的纯文本字符串是否能对应到给定的一个哈希值。如果你使用的是 Laravel 内置的 LoginController
了,你已经在用它了。
if (Hash::check('plain-text', $hashedPassword)) {
// The passwords match...
}
检查密码是否需要重新哈希
needsRehash
方法用来确定由于密码哈希后,哈希值使用的工作因子是否已更改:
if (Hash::needsRehash($hashed)) {
$hashed = Hash::make('plain-text');
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由 Summer
于 7年前 加精