Laravel 文档阅读:哈希

翻译、衍生自:https://learnku.com/docs/laravel/5.5/hashing

简介

Laravel 的 Hash 门面为存储用户密码提供了安全的 Bcrypt 哈希。如果你是使用内置的 LoginControllerRegisterController 类来构建认证系统的,那么你的用户密码在注册和认证过程中已经自动使用了 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年前 加精
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!