Hashing

Giới thiệu

Laravel Hash facade cung cấp phương thức hash an toàn với Bcrypt để lưu mật khẩu của người dùng. Nếu bạn sử dụng LoginControllerRegisterController có sẵn có Laravel, nó đã tự động thiết lập sử dụng sẵn Bcrypt cho việc đăng kí và xác thực.

Bcrypt là một sự lựa chọn tốt cho hashing mật khẩu bởi vì "work factor" của nó có thể điều chỉnh được, có nghĩa là thời gian tốn để tạo ra một hash có thể tăng lên nếu như công suất của phần cứng tăng lên.

Sử dụng cơ bản

Bạn có thể hash mật khẩu bằng cách gọi hàm make trong Hash facade:

<?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();
    }
}

So sánh mật khẩu với một hash

Phương thức check cho phép bạn so sánh một chuỗi với một hash. Tuy nhiên, nếu bạn đang sử dụng LoginController của Laravel, thì bạn không cần sử dụng trực tiếp, vì nó việc xác nhận này đã được xử lý sắn trong controller:

if (Hash::check('plain-text', $hashedPassword)) {
    // The passwords match...
}

Kiểm tra nếu mật khẩu cần được hash lại

Phương thức needsRehash ho phép bạn xác định nếu chỉ số hoạt động của máy hash đã thay đổi khi mật khẩu thay đổi:

if (Hash::needsRehash($hashed)) {
    $hashed = Hash::make('plain-text');
}
Nguồn: https://laravel.com/docs/5.3/hashing