服務(wù) ―― 哈希

2018-02-24 15:38 更新

服務(wù) —— 哈希

1、簡(jiǎn)介

Laravel?`Hash使用該Bcrypt。

Bcrypt是散列密碼的絕佳選擇,因?yàn)槠洹惫ぷ饕蜃印笆强烧{(diào)整的,這意味著隨著硬件功能的提升,生成哈希所花費(fèi)的時(shí)間也會(huì)增加。

2、基本使用

可以調(diào)用Hash門面上的make方法散列存儲(chǔ)密碼:

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

        // 驗(yàn)證新密碼長度...

        $user->fill([
            'password' => Hash::make($request->newPassword)
        ])->save();
    }
}

此外,還可以使用全局的幫助函數(shù)bcrypt

bcrypt('plain-text');

2.1 驗(yàn)證哈希密碼

check方法允許你驗(yàn)證給定原生字符串和給定哈希是否相等,然而,如果你在使用Laravel自帶的AuthController(詳見用戶認(rèn)證一節(jié)),就不需要再直接使用該方法,因?yàn)樽詭У恼J(rèn)證控制器自動(dòng)調(diào)用了該方法:

if (Hash::check('plain-text', $hashedPassword)) {
    // 密碼匹配...
}

2.2 檢查密碼是否需要被重新哈希

needsRehash方法允許你判斷哈希計(jì)算器使用的工作因子在上次密碼被哈希后是否發(fā)生改變:

if (Hash::needsRehash($hashed)) {
    $hashed = Hash::make('plain-text');
}
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)